99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

3天內不再提示

從Linux平臺來研究GPIO軟件框架

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

掃碼添加小助手

加入工程師交流群

嵌入式 Linux 平臺

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

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

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

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

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

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

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

①、獲取設備樹中 pin 信息。

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

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

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

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

Linux 驅動掛載順序分析

圖片

gpio

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

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

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

    關注

    5152

    文章

    19676

    瀏覽量

    317737
  • Linux
    +關注

    關注

    87

    文章

    11511

    瀏覽量

    213882
  • 軟件
    +關注

    關注

    69

    文章

    5154

    瀏覽量

    89236
  • GPIO
    +關注

    關注

    16

    文章

    1280

    瀏覽量

    54132
  • 系統(tǒng)
    +關注

    關注

    1

    文章

    1032

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    如何linux控制SCU GPIO?

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

    需求的角度去理解Linux系列:總線、設備和驅動

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

    Windows平臺遷移到Linux平臺怎么實現(xiàn)?

    我們試圖Windows平臺遷移到Linux平臺。所以我們正在嘗試為先前的塊設計重新生成位文件。但是我們遇到了異常錯誤。是否有任何過程編譯
    發(fā)表于 08-28 12:38

    Linux 驅動 = 軟件框架 + 硬件操作

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

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

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

    基于Linux的實時平臺研究

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

    嵌入式Linux軟件測試框架研究

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

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

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

    TI達芬奇軟件框架技術的研究與改進

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

    如何在嵌入式Linux中使用GPIO

    了解如何在嵌入式Linux中使用GPIO,特別強調Zynq-7000系列。 我們介紹了基本的用戶和內核空間GPIO使用情況,以及GPIO,GPIO
    的頭像 發(fā)表于 11-26 07:02 ?4336次閱讀

    Linux DMA Engine框架的介紹

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

    嵌入式Linux驅動開發(fā)基礎到框架

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

    Linux驅動分析之RTC框架

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

    硬件軟件角度理解Gadget框架

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