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

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

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

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

從Linux平臺(tái)來研究GPIO軟件框架

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:Jasonangel ? 2023-09-28 16:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式 Linux 平臺(tái)

先總結(jié)一句:不管是單片機(jī)還是高端 ARM 平臺(tái),最底層都是寄存器,硬件之上就是寄存器,任何封裝形式到最底層就是操作寄存器。

對(duì)于上了 Linux 系統(tǒng)的平臺(tái),我們有其他方法,讓它可以像單片機(jī)一樣簡(jiǎn)單的操作 IO 口,這得益于各路 Linux 大神對(duì)系統(tǒng)底層的封裝。

在 Linux 中有 pinctrl 和 gpio 子系統(tǒng),它們提供了 API 接口給你使用,讓你方便的操控 GPIO 口。

Linux 內(nèi)核針對(duì) PIN 的配置推出了 pinctrl 子系統(tǒng),對(duì) GPIO 的配置推出了 gpio 子系統(tǒng)。

上面這句話很重要,我詳細(xì)解釋一下:這里是將 pin 腳和控制 IO 口輸入輸出分離。

pinctrl 子系統(tǒng)管理 200 個(gè) IO 口的上拉下拉電阻電流驅(qū)動(dòng)能力,是硬件底層的存在。如果 pinctrl 將某個(gè) pin 腳初始化成了普通GPIO 而不是 IIC 或者 SPI,那么接下來我們就可以使用 gpio 子系統(tǒng)的 API 去操作 IO 口輸出高低電平。

傳統(tǒng)的配置 pin 的方式就是直接操作相應(yīng)的寄存器,但是這種配置 方式比較繁瑣、而且容易出問題(比如 pin 功能沖突)。pinctrl子系統(tǒng)就是為了解決這個(gè)問題而引入的,pinctrl 子系統(tǒng)主要工作內(nèi)容如下:

①、獲取設(shè)備樹中 pin 信息。

②、根據(jù)獲取到的 pin 信息來設(shè)置 pin 的復(fù)用功能

③、根據(jù)獲取到的 pin 信息來設(shè)置 pin 的電氣特性,比如上/下拉、速度、驅(qū)動(dòng)能力等。

對(duì)于我們使用者來講,只需要在設(shè)備樹里面設(shè)置好某個(gè) pin 的相關(guān)屬性即可,其他的初始化工作均由 pinctrl 子系統(tǒng)來完成,pinctrl子系統(tǒng)源碼目錄為 drivers/pinctrl。

注意,pinctrl 子系統(tǒng)也是一個(gè)標(biāo)準(zhǔn)的 platform 驅(qū)動(dòng),當(dāng)設(shè)備和驅(qū)動(dòng)匹配的時(shí)候,probe 函數(shù)會(huì)執(zhí)行,只是 pinctrl 子系統(tǒng)采用的arch_initcall 去聲明,而不是module_init(device_initcall),所以在系統(tǒng)起來的時(shí)候它會(huì)先加載。(具體原因看下面這篇文章)

Linux 驅(qū)動(dòng)掛載順序分析

圖片

gpio

可以看出其實(shí)兩者軟件框架一樣的,主要是 HW Abstract layer 具體實(shí)現(xiàn)不一樣。

你以為兩者是分離的,實(shí)際上不是的,gpio 子系統(tǒng)是基于 pinctrl 子系統(tǒng)的,gpio 的 API 接口的實(shí)現(xiàn)很多都是基于 pinctrl子系統(tǒng)的函數(shù)。

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

    關(guān)注

    5152

    文章

    19676

    瀏覽量

    317700
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213865
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5154

    瀏覽量

    89232
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1280

    瀏覽量

    54126
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1032

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    一文搞懂Linux pinctrl/gpio子系統(tǒng)

    注: 所有文章基于linux-3.13以上,本系列主要介紹 GPIO的一些基本知識(shí),驅(qū)動(dòng)操作GPIO的接口,應(yīng)用層通過sysfs操作GPIO的接口,
    發(fā)表于 06-09 09:52 ?3514次閱讀

    如何linux控制SCU GPIO

    我有一個(gè)使用 IMX8QM 的定制板,我需要能夠 linux 控制 SCU GPIO。 我已經(jīng)內(nèi)核啟用了 scu gpio,找到了 im
    發(fā)表于 04-01 07:59

    需求的角度去理解Linux系列:總線、設(shè)備和驅(qū)動(dòng)

    %的開發(fā)工作量,而你只需要完成20%的開發(fā)工作量。Linux平臺(tái)上的各個(gè)子系統(tǒng),如設(shè)備驅(qū)動(dòng)模型、input子系統(tǒng)、I2C總線、frame buffer驅(qū)動(dòng)等等都屬于軟件框架,它是針對(duì)特
    發(fā)表于 03-11 14:45

    Windows平臺(tái)遷移到Linux平臺(tái)怎么實(shí)現(xiàn)?

    我們?cè)噲DWindows平臺(tái)遷移到Linux平臺(tái)。所以我們正在嘗試為先前的塊設(shè)計(jì)重新生成位文件。但是我們遇到了異常錯(cuò)誤。是否有任何過程編譯
    發(fā)表于 08-28 12:38

    Linux系統(tǒng)的功耗研究

    Linux正在嵌入式領(lǐng)域發(fā)揮著越來越重要的作用。對(duì)于嵌入式設(shè)備尤其是移動(dòng)設(shè)備來說,功耗是系統(tǒng)的重要指標(biāo),系統(tǒng)設(shè)計(jì)的重要目標(biāo)之一就是要盡可能地降低功耗?,F(xiàn)在,對(duì)功耗的研究主要集中在硬件解決方案上,而軟件
    發(fā)表于 11-04 06:45

    Linux 驅(qū)動(dòng) = 軟件框架 + 硬件操作

    ??Linux 驅(qū)動(dòng) = 軟件框架 + 硬件操作??驅(qū)動(dòng)程序依賴于 Linux 內(nèi)核,你為開發(fā)板 A 開發(fā)驅(qū)動(dòng),那就先在 Ubuntu 中得到、 配置、編譯開發(fā)板 A 所使用的
    發(fā)表于 12-17 07:11

    基于Linux的XFRM框架下IPSec VPN的研究

    針對(duì)現(xiàn)有 IPSec VPN 系統(tǒng)在效率和可靠性方面存在的問題,提出并改進(jìn)了一種基于Linux最新內(nèi)核平臺(tái)的 IPSec VPN網(wǎng)關(guān)系統(tǒng)。給出Linux 的XFRM 框架結(jié)構(gòu)和函數(shù)調(diào)用
    發(fā)表于 04-13 09:31 ?31次下載

    基于Linux的實(shí)時(shí)平臺(tái)研究

    主要介紹了一個(gè)基于Linux 操作系統(tǒng)的實(shí)時(shí)平臺(tái)的技術(shù)研究和實(shí)現(xiàn)方法。所研究的實(shí)時(shí)平臺(tái)以X86 體系PC 為硬件環(huán)境,
    發(fā)表于 06-01 10:31 ?11次下載

    嵌入式Linux軟件測(cè)試框架研究

    嵌入式Linux 軟件是最難測(cè)試的一類軟件。在測(cè)試過程中通過使用有效的測(cè)試框架,可以顯著提高測(cè)試效率,最終確保軟件質(zhì)量。通過對(duì)嵌入式
    發(fā)表于 06-07 17:14 ?29次下載

    第8章 Linux軟件開發(fā)平臺(tái)軟件配置

    Linux軟件開發(fā)平臺(tái)軟件配置 8.1 Linux 體系結(jié)構(gòu) 8.2 Linux開發(fā)
    發(fā)表于 04-11 14:38 ?3次下載

    TI達(dá)芬奇軟件框架技術(shù)的研究與改進(jìn)

    TI達(dá)芬奇軟件框架技術(shù)的研究與改進(jìn)
    發(fā)表于 10-21 09:23 ?1次下載
    TI達(dá)芬奇<b class='flag-5'>軟件</b><b class='flag-5'>框架</b>技術(shù)的<b class='flag-5'>研究</b>與改進(jìn)

    Linux DMA Engine框架的介紹

    此會(huì)話描述如何設(shè)備驅(qū)動(dòng)程序在Linux中使用DMA。 這包括內(nèi)存分配,緩存控制和DMA設(shè)備控制。 詳細(xì)介紹了Linux DMA Engine框架。
    的頭像 發(fā)表于 11-23 06:29 ?6729次閱讀

    嵌入式Linux驅(qū)動(dòng)開發(fā)基礎(chǔ)到框架

    一眾嵌入式Linux驅(qū)動(dòng)書中筆者最推崇宋寶華的《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》,但他完全可以更進(jìn)一步上升到驅(qū)動(dòng)框架個(gè)例(比如USBwifi模塊驅(qū)動(dòng))和應(yīng)用層調(diào)用。有些書c語言基礎(chǔ)談起,
    發(fā)表于 11-01 16:58 ?15次下載
    嵌入式<b class='flag-5'>Linux</b>驅(qū)動(dòng)開發(fā)<b class='flag-5'>從</b>基礎(chǔ)到<b class='flag-5'>框架</b>

    Linux驅(qū)動(dòng)分析之RTC框架

    當(dāng)Linux內(nèi)核啟動(dòng)時(shí),它會(huì)RTC中讀取時(shí)間與日期,作為基準(zhǔn)值。然后通過軟件維護(hù)系統(tǒng)時(shí)間和日期。Linux系統(tǒng)中提供了RTC核心層,對(duì)于
    的頭像 發(fā)表于 05-26 15:12 ?1243次閱讀
    <b class='flag-5'>Linux</b>驅(qū)動(dòng)分析之RTC<b class='flag-5'>框架</b>

    硬件軟件角度理解Gadget框架

    2. 硬件軟件角度理解 Gadget 框架 USB 傳輸?shù)暮诵氖?endpoint,使用 endpoint 可以收發(fā)數(shù)據(jù)。在 endpoint 之上,就可以模擬 USB 串口、USB 觸碰屏
    的頭像 發(fā)表于 07-13 11:32 ?1563次閱讀
    <b class='flag-5'>從</b>硬件<b class='flag-5'>軟件</b>角度理解Gadget<b class='flag-5'>框架</b>