虛擬pinctrl驅動

之前呢,我們講解了在內核中pinctrl子系統是怎么實現的,今天我們來嘗試一下自己去寫一個pinctrl子系統:

首先呢,我們來看看一個pinctrl子系統需要做的事情:

上面的話,我們看了一個pinctrl子系統需要的三大功能以及在驅動程序中對應的三大結構體

下面我們來看看編寫驅動程序時我們需要干什么:

我們是需要去搭建倆個驅動程序的,一個是pin controller設備節點的驅動程序,一個是client設備節點的驅動程序

設備樹文件已經給出了,下面我們來看看驅動程序應該怎么去寫:

下面我們來慢慢看:

我們先來把驅動程序的框架搭建出來:

接著就是去構建platform_deiver結構體了:


這樣子在驅動程序和設備樹節點通過compatible屬性匹配后,probe函數就會被調用,那么在這里面,我們就需要去解析設備樹,也就是需要去實現Pinctrl desc結構體:

首先就是分配pinctrl desc結構體了:

接著就是去設置了:

第一個作用就是去描述引腳了,單個引腳就只需要靠pins npins去描述就行,對于一組引腳,我們就需要去配置相應的結構體virtual_pctrl_ops去進行描述了:

接著就是實現這個結構體里面的函數指針了:第一個就是獲取一共有多少組,我們這里為了圖方便,這里一個引腳就代表一組吧:

所以我們這個函數只需要去返回引腳的數量就行了

接著就是獲取組的名字:

一樣的,我們只需要去返回pins結構體數組里面的名字就行

接著就是去獲取組的引腳:

那個把設備樹上面的信息轉換成mapping結構體我們后面再講,因為有點復雜,我們接著來看probe函數:

接著就是去設置pinctrl子系統的第二個功能,也就是引腳復用了,一樣的,我們只需要去配置好virtual_pmx_ops結構體就可以了:

先來看第一個函數,這個是用來查看一共有多少個功能的:這里面全是靜態的,是比較簡單的,其實還有一種動態的從設備樹里面去獲取的方法

第二個就是去獲取這個功能的名字了:

第三個就是獲取指定功能的引腳組:

最后一個也就是最重要的,也就是去把對應的組設置成指定的功能:但是因為沒有硬件寄存器去給我們操作,所以我們去打印信息就行了,畢竟只是虛擬的嘛,所以沒有必要去搞的那么復雜

那么pinctrl子系統的第二個功能,引腳復用就講完了,我們再回看probe函數:

第三個功能就是去配置引腳功能了:

這樣子就大概虛擬的把指定的引腳設置成相應的配置模式了

那么我們去設置pinctrl desc結構體就搞完了,最后去注冊就行了:

那么我們就只剩下怎么去從設備樹中去注冊一個Mapping結構體了,client驅動只需要去寫一個簡單的platform_driver就可以了

接著我們來看看怎么去注冊mapping結構體:

那么到這里,我們就徹底講完啦,完結,撒花(doge.)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73997.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot自動配置原理解析

文章目錄 前言一、SpringBootConfiguration二、EnableAutoConfiguration2.1、AutoConfigurationPackage2.2、Import(AutoConfigurationImportSelector.class) 三、ComponentScan四、自動配置源碼4.1、獲取所有候選的自動配置類4.2、過濾不滿足條件的自動配置 總結 前言 在常規的…

2025/3/20 心得

第一題。 M. B - Smartphone Addiction 問題描述 高橋的智能手機電池容量為NN毫安時。在時間0.50.5、1.51.5、2.52.5等時刻(即對于每個整數nn,時間為n 0.5n0.5),電池電量減少11毫安時。 高橋將在時間00帶著充滿電的手機離開…

MQTT之重復消息(6、在項目中遇到的問題)

項目背景: 在 Spring Boot MQTT 5.0 環境中,RTU設備向SpringBoot平臺發送心跳數據、業務監控數據。同時SpringBoot平臺可以向RTU設備下發指令,RTU在執行完指令之后向平臺發送響應數據。 問題一、SpingBoot平臺發送指令給RTU設備,RTU設備能夠…

Cesium 全面介紹

一、Cesium 是什么? Cesium 是一個開源的 JavaScript 庫,專門用于構建高性能的 3D 地理空間可視化應用。它基于 WebGL 技術,無需插件即可在瀏覽器中渲染全球地形、影像、3D 模型、矢量數據等,支持從衛星視角到地下管網的 全維度空…

Trae-中國首款免費AI原生IDE

Trae 簡介 Trae 是由字節跳動于2025年1月推出的國內首個原生AI集成開發環境(IDE),旨在通過AI技術賦能開發者,簡化編程流程。其核心功能基于Claude 3.5和GPT-4o等先進AI模型,支持智能代碼生成、優化及多模態交互&#…

1.3 斐波那契數列模型:LeetCode 746. 使用最小花費爬樓梯

動態規劃解最小花費爬樓梯問題:LeetCode 746. 使用最小花費爬樓梯 1. 題目鏈接 LeetCode 746. 使用最小花費爬樓梯 題目要求:給定一個整數數組 cost,其中 cost[i] 是從樓梯第 i 階向上爬所需支付的費用。你可以從下標 0 或 1 的臺階開始爬&a…

游戲開發中的貝塞爾曲線:感受絲滑的數學之美

這是一篇vip文章,如果你還不是vip,可以移步https://www.ilikexff.cn/articles/165免費閱讀。 介紹 貝塞爾曲線是計算機圖形學中最重要的概念之一,以其在表示曲線時的靈活性和精確性而聞名。廣泛應用于計算機圖形學、動畫、路徑規劃等領域的數學曲線。 貝塞爾曲線的數學原理基…

強化學習課程:stanford_cs234 學習筆記(2)introduction to RL

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言5、強化學習課程大綱5.1 課程內容主:5.2 馬爾可夫決策過程:5.2.1 馬爾可夫性 markov propterty5.2.2 馬爾可夫過程 markov process5.2.3…

第 26 場 藍橋月賽 部分題解

第 26 場 藍橋月賽 2.燈籠猜謎3.元宵分配4.擺放湯圓5.元宵交友(運行超時 通過90%) 2.燈籠猜謎 分析:以當前位置為視角,要想移動的距離盡可能的少,按順序猜謎語,給你一個區間,有三種情況&#xf…

JAVA實戰開源項目:體育館使用預約平臺(Vue+SpringBoot) 附源碼

本文項目編號 T 144 ,文末自助獲取源碼 \color{red}{T144,文末自助獲取源碼} T144,文末自助獲取源碼 目錄 一、系統介紹二、數據庫設計三、配套教程3.1 啟動教程3.2 講解視頻3.3 二次開發教程 四、功能截圖五、文案資料5.1 選題背景5.2 國內…

解決【vite-plugin-top-level-await】 插件導致的 Bindings Not Found 錯誤

解決【vite-plugin-top-level-await】 插件導致的 Bindings Not Found 錯誤 環境設置 操作系統: macOS硬件平臺: M1 Pro前端框架: Vue 3Node.js 版本: 20 在使用 Vue 項目時,我們嘗試集成 vite-plugin-top-level-await 插件以支持頂層 await 語法。然而&#xff…

推薦系統(十九):優勢特征蒸餾(Privileged Features Distillation)在商品推薦中的應用(二)

在上一篇文章《推薦系統(十八):優勢特征蒸餾(Privileged Features Distillation)在商品推薦中的應用》中,筆者實現了一個基于 PFD 思想的 Demo。其中,Teacher 模型和 Student 模型都是簡單的單任務(CTR)模型,在本節,筆者將基于 PFD 思想實現一個多任務模型:其中,Tea…

深度學習之卷積

從全連接到卷積 MLP的缺陷,假設有如下的場景: 分類貓和狗的圖片 使用一個還不錯的相機采集圖片(12M像素)RGB圖片有 36M元素使用100大小的單隱藏層MLP,模型有 3.6B元素 遠多于世界上所有貓和狗總數(900M狗,600M貓) …

目標識別與雙目測距(1)環境搭建:Ubuntu+yolov5+pcl庫

環境情況 ubuntu 18.04 → 20.04(最終) 安裝Ubuntu1804虛擬機系統 Anaconda:可參考我的另一篇文章 Python 3.6.13 → 3.8(最終)Anaconda3-2021.05 目標識別:YOLOv5相關 1、安裝git sudo apt install gi…

LinuxTCP/UDP基礎概念

TCP(傳輸控制協議) TCP 是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它的主要特點包括: 面向連接:在傳輸數據之前,需要通過“三次握手”建立連接;傳輸結束后,通過“四次揮手”斷開…

MP3、WAV、RM、PNG格式

MP3、WAV、RM、PNG格式 MP3 是一種音頻壓縮格式,采用了 MPEG-1 Audio Layer 3 或 MPEG-2 Audio Layer 3 編碼標準.MP3 格式能夠以較小的文件大小存儲高質量的音頻,可在多種設備如手機、MP3 播放器、電腦上播放,是目前應用最廣泛的音頻格式之一. MPEG-1 是MPEG(Moving Pictu…

力扣hot100:滑動窗口——找到字符串中所有字母異位詞

題目鏈接:找到字符串中所有字母異位詞 考慮用滑動窗口,窗口大小固定為字符串p的長度,用一個for循環控制子串的結束位置。 怎么判斷是字母異位詞? 1、排序:字符串中所有符合條件的字母異位詞與目標串p在經過排序后是…

人工智能通識速覽一(神經網絡)(編輯中)

上篇:人工智能通識速覽一(機器學習) 人工智能通識速覽一(機器學習)(編輯中)-CSDN博客https://blog.csdn.net/siper12138/article/details/146512068?sharetypeblogdetail&sharerId1465120…

【數據標準】數據標準化框架體系-基礎類數據標準

導讀:數據標準化的四大基礎類標準(業務術語、業務規則、命名規范、代碼標準)是企業數據治理的核心支柱。主要作用體現在?消除業務與技術間的語義鴻溝?(通過統一術語與命名規范),?保障數據全生命周期的質…

可發1區的超級創新思路(python\matlab實現):MPTS+Lconv+注意力集成機制的Transformer時間序列模型

首先聲明,該模型為原創!原創!原創!且該思路還未有成果發表,感興趣的小伙伴可以借鑒! 應用場景 該模型主要用于時間序列數據預測問題,包含功率預測、電池壽命預測、電機故障檢測等等。 一、模型整體架構(本文以光伏功率預測為例) 本模型由多尺度特征提取模塊(MPTS)…