国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)——解決/sys/bus/spi/devices下沒(méi)有對(duì)應(yīng)的spi設(shè)備文件

這篇具有很好參考價(jià)值的文章主要介紹了嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)——解決/sys/bus/spi/devices下沒(méi)有對(duì)應(yīng)的spi設(shè)備文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

問(wèn)題描述

最近在學(xué)習(xí)Linux驅(qū)動(dòng)開(kāi)發(fā)中SPI總線(xiàn)的驅(qū)動(dòng)框架,但在修改完設(shè)備樹(shù)添加完對(duì)應(yīng)的spi設(shè)備節(jié)點(diǎn)后,理應(yīng)在/sys/bus/spi下會(huì)有對(duì)應(yīng)的spi設(shè)備,我的目錄下面沒(méi)有。

spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享
無(wú)spi設(shè)備

然后我查看了/proc/device-tree,發(fā)現(xiàn)有對(duì)應(yīng)的spi設(shè)備節(jié)點(diǎn),我就先沒(méi)有過(guò)多理會(huì)這個(gè)問(wèn)題。

spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享
/proc/device-tree下有對(duì)應(yīng)的節(jié)點(diǎn)信息

?

spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享
設(shè)備樹(shù).dts對(duì)應(yīng)的spi設(shè)備節(jié)點(diǎn)信息

但在寫(xiě)完對(duì)應(yīng)的驅(qū)動(dòng)后加載spi對(duì)應(yīng)的.ko文件,.probe函數(shù)沒(méi)有執(zhí)行;卸載對(duì)應(yīng)的驅(qū)動(dòng)文件后.remove也沒(méi)有執(zhí)行(在終端沒(méi)有打印對(duì)應(yīng)的語(yǔ)句)。

spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享
.probe函數(shù)
spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享
.remove函數(shù)

原因分析:

這時(shí)我知道spi驅(qū)動(dòng)和spi設(shè)備沒(méi)有匹配,驅(qū)動(dòng)應(yīng)該沒(méi)有什么問(wèn)題,問(wèn)題大概率出現(xiàn)在.dts文件中對(duì)應(yīng)的spi設(shè)備節(jié)點(diǎn)。

解決方案:

我總看我的spi節(jié)點(diǎn)中的信息發(fā)現(xiàn)不出什么問(wèn)題,然后我實(shí)在沒(méi)辦法,將正點(diǎn)官方的設(shè)備樹(shù)對(duì)應(yīng)的spi節(jié)點(diǎn)信息復(fù)制到我的設(shè)備樹(shù)下,用修改過(guò)后的設(shè)備樹(shù)啟動(dòng),重新查看/sys/bus/spi/devices,發(fā)現(xiàn)出現(xiàn)了一個(gè)設(shè)備文件,然后重新加載驅(qū)動(dòng)、卸載驅(qū)動(dòng)對(duì)應(yīng)的.probe和.remove都會(huì)正常執(zhí)行了。

正點(diǎn)原子正常節(jié)點(diǎn)信息

&ecspi3 {
        fsl,spi-num-chipselects = <1>;
        cs-gpio = <&gpio1 20 GPIO_ACTIVE_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi3>;
        status = "okay";

	spidev: icm20608@0 {
	compatible = "alientek,icm20608";
        spi-max-frequency = <8000000>;
        reg = <0>;
    };
};

我的有錯(cuò)誤的節(jié)點(diǎn)信息

&ecspi3 {
	fsl,spi-num-chipselects = <1>;
	cs-gpio = <&gpio1 20 GPIO_ACTIVE_LOW>;			//不能定義成cs-gpios
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi3>;
	status = "okay";

	spidev: icm20608@0 {
		reg = <0>;
		compatible = "alientek,icm20608";
		spi_max_frequency = <8000000>;
	};
};
spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享
出現(xiàn)spi設(shè)備文件

?

spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享
probe正常執(zhí)行

?

spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享
remove正常執(zhí)行

我還是沒(méi)有發(fā)現(xiàn)到底是什么問(wèn)題,期間我還嘗試調(diào)整了一下每個(gè)屬性的順序,但還是不行。最后我在word中一句一句比較,最終發(fā)現(xiàn)了問(wèn)題。我的是spi_max_frequency,正點(diǎn)原子正常的是spi-max-frequency,然后查看綁定文檔確實(shí)不是''_''而是''-''。這個(gè)不會(huì)影響設(shè)備樹(shù),但可能就會(huì)導(dǎo)致內(nèi)核無(wú)法識(shí)別到是不是具體的spi設(shè)備。

spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享

spi-max-frequency,驅(qū)動(dòng)開(kāi)發(fā),linux,經(jīng)驗(yàn)分享

總結(jié)

寫(xiě)代碼的時(shí)候還是仔細(xì)一些,可以減少一些奇奇怪怪的bug。不僅僅是spi設(shè)備,我猜想其他設(shè)備的節(jié)點(diǎn)屬性信息寫(xiě)錯(cuò),在對(duì)應(yīng)的總線(xiàn)下可能也不會(huì)出現(xiàn)相應(yīng)的設(shè)備文件。(未證實(shí))文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-570264.html

到了這里,關(guān)于嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)——解決/sys/bus/spi/devices下沒(méi)有對(duì)應(yīng)的spi設(shè)備文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)——常見(jiàn)框架梳理

    嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)——常見(jiàn)框架梳理

    本文主要介紹了Linux驅(qū)動(dòng)開(kāi)發(fā)中一些常用的驅(qū)動(dòng)框架,platform、input、iic、spi等,硬件平臺(tái)使用的是正點(diǎn)原子的imx6ull開(kāi)發(fā)板。 不管什么框架最后都是要追溯到配置IO的電氣屬性和復(fù)用功能 如果要使用外部中斷,設(shè)備樹(shù)節(jié)點(diǎn)中還需添加相關(guān)信息,什么邊沿觸發(fā) 1:module_init和mod

    2024年02月15日
    瀏覽(32)
  • 嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā) 04:基于設(shè)備樹(shù)的驅(qū)動(dòng)開(kāi)發(fā)

    嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā) 04:基于設(shè)備樹(shù)的驅(qū)動(dòng)開(kāi)發(fā)

    前面文章 《嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā) 03:平臺(tái)(platform)總線(xiàn)驅(qū)動(dòng)模型》 引入了資源和驅(qū)動(dòng)分離的概念,這篇文章將在前面基礎(chǔ)上更進(jìn)一步,引入設(shè)備樹(shù)的概念。 在平臺(tái)總線(xiàn)驅(qū)動(dòng)模型中資源和驅(qū)動(dòng)已經(jīng)從邏輯上和代碼組織上進(jìn)行了分離,但每次調(diào)整資源還是會(huì)涉及到內(nèi)核,所以現(xiàn)

    2024年02月16日
    瀏覽(27)
  • 正點(diǎn)原子嵌入式linux驅(qū)動(dòng)開(kāi)發(fā)——Linux 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)

    正點(diǎn)原子嵌入式linux驅(qū)動(dòng)開(kāi)發(fā)——Linux 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)

    網(wǎng)絡(luò)驅(qū)動(dòng)是linux里面驅(qū)動(dòng)三巨頭之一 ,linux下的網(wǎng)絡(luò)功能非常強(qiáng)大,嵌入式linux中也常常用到網(wǎng)絡(luò)功能。前面已經(jīng)講過(guò)了字符設(shè)備驅(qū)動(dòng)和塊設(shè)備驅(qū)動(dòng),本章就來(lái)學(xué)習(xí)一下linux里面的 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng) 。 本次筆記中討論的都是有線(xiàn)網(wǎng)絡(luò)! 提起網(wǎng)絡(luò),一般想到的硬件就是“網(wǎng)卡”。在

    2024年01月17日
    瀏覽(25)
  • 【嵌入式Linux驅(qū)動(dòng)】驅(qū)動(dòng)開(kāi)發(fā)調(diào)試相關(guān)的關(guān)系記錄

    【嵌入式Linux驅(qū)動(dòng)】驅(qū)動(dòng)開(kāi)發(fā)調(diào)試相關(guān)的關(guān)系記錄

    https://www.processon.com/mindmap/64537772b546c76a2f37bd2f

    2024年02月02日
    瀏覽(27)
  • 嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)系列六:Makefile

    嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)系列六:Makefile

    Makefile是什么? gcc hello.c -o hello gcc aa.c bb.c cc.c dd.c ... make工具和Makefile make和Makefile是什么關(guān)系? make工具:找出修改過(guò)的文件,根據(jù)依賴(lài)關(guān)系,找出受影響的相關(guān)文件,最后按照規(guī)則單獨(dú)編譯這些文件。 Makefile文件:記錄依賴(lài)關(guān)系和編譯規(guī)則。 必須要學(xué)精Makefile嗎? 怎么學(xué)習(xí)Makefi

    2024年02月13日
    瀏覽(24)
  • 嵌入式linux驅(qū)動(dòng)開(kāi)發(fā)篇之設(shè)備樹(shù)

    嵌入式linux驅(qū)動(dòng)開(kāi)發(fā)篇之設(shè)備樹(shù)

    設(shè)備樹(shù)(Device Tree)是一種用于描述嵌入式系統(tǒng)硬件組件及其連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。它被廣泛用于嵌入式 Linux 系統(tǒng),尤其是針對(duì)使用多種不同架構(gòu)和平臺(tái)的嵌入式系統(tǒng)。它是一種與硬件描述相關(guān)的中間表示形式,將硬件信息抽象成一種可移植的格式,使得操作系統(tǒng)和引導(dǎo)加載

    2024年02月22日
    瀏覽(25)
  • 嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)(LCD屏幕專(zhuān)題)(一)

    嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)(LCD屏幕專(zhuān)題)(一)

    總的分辨率是 yres*xres。 以下三種方式表示顏色 每個(gè)屏幕都有一個(gè)內(nèi)存(framebuffer)如下圖,內(nèi)存中每塊數(shù)據(jù)對(duì)用屏幕上的一個(gè)像素點(diǎn),設(shè)置好LCD后,只需把顏色數(shù)據(jù)寫(xiě)入framebuffer即可。 Framebuffer驅(qū)動(dòng)屬于字符設(shè)備驅(qū)動(dòng),我們先說(shuō)字符設(shè)備驅(qū)動(dòng)框架如下圖: 驅(qū)動(dòng)主設(shè)備號(hào) 構(gòu)造

    2024年02月09日
    瀏覽(30)
  • 嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)(LCD屏幕專(zhuān)題)(三)

    嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)(LCD屏幕專(zhuān)題)(三)

    1. 硬件相關(guān)的操作 LCD驅(qū)動(dòng)程序的核心就是: 分配fb_info 設(shè)置fb_info 注冊(cè)fb_info 硬件相關(guān)的設(shè)置 硬件相關(guān)的設(shè)置又可以分為3部分: 引腳設(shè)置 時(shí)鐘設(shè)置 LCD控制器設(shè)置 2. 在設(shè)備樹(shù)里指定LCD參數(shù) 3. 編程 3.1 從設(shè)備樹(shù)獲得參數(shù) 時(shí)序參數(shù)、引腳極性等信息,都被保存在一個(gè)display_timi

    2024年02月09日
    瀏覽(33)
  • 嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā) 02:將驅(qū)動(dòng)程序添加到內(nèi)核中

    嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā) 02:將驅(qū)動(dòng)程序添加到內(nèi)核中

    在上一篇文章 《嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā) 01:基礎(chǔ)開(kāi)發(fā)與使用》 中我們已經(jīng)實(shí)現(xiàn)了最基礎(chǔ)的驅(qū)動(dòng)功能。在那篇文章中我們的驅(qū)動(dòng)代碼是獨(dú)立于內(nèi)核代碼存放的,并且我們的驅(qū)動(dòng)編譯后也是一個(gè)獨(dú)立的模塊。在實(shí)際使用中將驅(qū)動(dòng)代碼放在內(nèi)核代碼中,并將驅(qū)動(dòng)編譯到內(nèi)核中也是比較

    2023年04月09日
    瀏覽(51)
  • 嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)系列五:Linux系統(tǒng)和HelloWorld

    嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)系列五:Linux系統(tǒng)和HelloWorld

    三個(gè)問(wèn)題 了解Hello World程序的執(zhí)行過(guò)程有什么用? 編譯和執(zhí)行:Hello World程序的執(zhí)行分為兩個(gè)主要步驟:編譯和執(zhí)行。編譯器將源代碼轉(zhuǎn)換為可執(zhí)行文件,然后計(jì)算機(jī)執(zhí)行該文件并輸出相應(yīng)的結(jié)果。了解這個(gè)過(guò)程可以幫助我們理解如何將代碼轉(zhuǎn)化為可運(yùn)行的程序。 語(yǔ)法和語(yǔ)義

    2024年02月13日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包