女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

RT-Thread SPI鏈?zhǔn)絺鬏敺欠ㄔL問?揭秘致命陷阱!

RT-Thread官方賬號(hào) ? 2025-06-24 19:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


前言

一、


在與RT-Thread BSP的開發(fā)者溝通中,發(fā)現(xiàn)SPI設(shè)備驅(qū)動(dòng)在輪詢(Polling)模式下偶發(fā)出現(xiàn)非法訪問異常(如圖)

bf68f6ea-50ef-11f0-986f-92fbcf53809c.png

問題復(fù)現(xiàn)場(chǎng)景:

開發(fā)者僅需一次單消息傳輸,但未顯式初始化struct rt_spi_message的next指針。

由于next未賦值為RT_NULL,鏈?zhǔn)絺鬏敃r(shí)觸發(fā)非法內(nèi)存訪問(next指向不可控地址)。

修復(fù)方案 :將next顯式置空后,異常消失。

借此機(jī)會(huì),本文將深入解析RT-Thread SPI驅(qū)動(dòng)的鏈?zhǔn)絺鬏敊C(jī)制,并探討B(tài)SP對(duì)RT-Thread SPI接口的適配特點(diǎn)與優(yōu)勢(shì)。

RT-Thread SPI鏈?zhǔn)絺鬏敊C(jī)制解析

二、


1.核心數(shù)據(jù)結(jié)構(gòu):struct rt_spi_message

RT-Thread通過struct rt_spi_message描述SPI傳輸操作,支持單條或多條消息鏈?zhǔn)絺鬏敗?/p>

關(guān)鍵成員next

1)若為NULL,表示當(dāng)前為鏈?zhǔn)絺鬏數(shù)淖詈笠粭l消息。
2)若非NULL,需確保next指向的rt_spi_message已正確初始化。

3)未初始化next的后果鏈?zhǔn)絺鬏敃r(shí),驅(qū)動(dòng)會(huì)嘗試訪問next指向的無效地址,導(dǎo)致非法訪問異常。

bf8a2018-50ef-11f0-986f-92fbcf53809c.png

在RT-Thread的官方wiki示例可以看到,在定義一個(gè)spi message時(shí),需要操作next成員以便確認(rèn)是否有下一條鏈?zhǔn)絺鬏?。如果沒有需要賦值為NULL。在RT-Thread的wiki可以看到,在使用rt_spi_transfer_message 傳輸兩條msg,在第二條msg的next賦值為RT_NULL代表結(jié)束。

bf94c27a-50ef-11f0-986f-92fbcf53809c.png

在RT-Thread組件SPI相關(guān)也對(duì)next進(jìn)行了操作,并且做了相關(guān)注釋說明

bfa9a38e-50ef-11f0-986f-92fbcf53809c.png

先楫BSP適配

三、


那么可能就有開發(fā)者問了,為什么別的BSP SPI驅(qū)動(dòng)反而就沒事了,可以在RT-Thread的主線看到,多數(shù)廠商(如STM32)的SPI驅(qū)動(dòng)未處理next指針,僅支持單條消息傳輸,但鏈?zhǔn)絺鬏敃r(shí)易因next未處理導(dǎo)致傳輸異常。

bfc2c940-50ef-11f0-986f-92fbcf53809c.png

而先楫BSP的SPI驅(qū)動(dòng)嚴(yán)格按照RT-Thread規(guī)范實(shí)現(xiàn)鏈?zhǔn)絺鬏斶壿?,?qiáng)制校驗(yàn)next指針。支持單條/鏈?zhǔn)絺鬏?,兼容?fù)雜場(chǎng)景。

bff233b0-50ef-11f0-986f-92fbcf53809c.png

先楫BSP對(duì)DSPI和QSPI的支持

四、


不同與其他廠家的BSP,把SPI和QSPI分開兩個(gè)驅(qū)動(dòng)文件,先楫是集成在SPI驅(qū)動(dòng)中,因?yàn)橄乳甋PI本身就是一個(gè)外設(shè),可以支持SPI,DSPI,QSPI三種傳輸模式。

怎么開啟這三種模式,可以通過menuconfig進(jìn)入到對(duì)應(yīng)的界面進(jìn)行選擇:分別是單線SPI,兩線DSPI,四線QSPI。

c021c210-50ef-11f0-986f-92fbcf53809c.png

如果想在RT-Thread Studio操作,可以參考下圖:

c033999a-50ef-11f0-986f-92fbcf53809c.png

需要注意的是:當(dāng)使用四線QSPI時(shí),對(duì)應(yīng)的pinmu.c的SPI初始化需要加上QSPI的D2和D3初始化。

c04c1e2a-50ef-11f0-986f-92fbcf53809c.png

通過list device命令可看到:SPI0為單線SPI,SPI1為雙線DSPI,SPI2為四線QSPI

c07f1df2-50ef-11f0-986f-92fbcf53809c.png

總結(jié)

五、


鏈?zhǔn)絺鬏斚葳澹何闯跏蓟痭ext指針是SPI驅(qū)動(dòng)異常的常見原因,開發(fā)者需嚴(yán)格遵循RT-Thread規(guī)范。

先楫BSP優(yōu)勢(shì)

1. 嚴(yán)格適配RT-Thread鏈?zhǔn)絺鬏斶壿?,避免非法訪問。2. 集成SPI/DSPI/QSPI驅(qū)動(dòng),簡(jiǎn)化開發(fā)流程。

聲明:本文內(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)投訴
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1790

    瀏覽量

    95135
  • BSP
    BSP
    +關(guān)注

    關(guān)注

    1

    文章

    92

    瀏覽量

    26806
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1382

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    RT-Thread記錄(二、RT-Thread內(nèi)核啟動(dòng)流程)

    在前面我們RT-Thread Studio工程基礎(chǔ)之上講一講RT-Thread內(nèi)核啟動(dòng)流程.
    的頭像 發(fā)表于 06-20 00:30 ?5582次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(二、<b class='flag-5'>RT-Thread</b>內(nèi)核啟動(dòng)流程)

    基于RT-ThreadSPI通訊

    ? ? ?sdk 目前還不支持 spi,沒有 spi 就失去了很多樂趣,如 easyflash、spi 的屏幕,藍(lán)訊的這次活動(dòng)我接到了模擬 spi 的任務(wù),下面介紹如何寫
    的頭像 發(fā)表于 08-22 09:28 ?2106次閱讀

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國(guó)內(nèi)有較大影響力的開源實(shí)時(shí)操作系統(tǒng),本文是RT-Thread實(shí)時(shí)操作系統(tǒng)的編程指南
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread用戶手冊(cè)

    RT-Thread用戶手冊(cè)——本書是RT-Thread的編程手冊(cè),用于指導(dǎo)在RT-Thread實(shí)時(shí)操作系統(tǒng)環(huán)境下如何進(jìn)行編 程。
    發(fā)表于 11-26 16:16 ?0次下載

    RT-ThreadSPI的細(xì)節(jié)內(nèi)容

    作為通信協(xié)議的兩大基礎(chǔ),IIC和SPI兩者的應(yīng)用都非常廣泛,上一篇文章講過了RTT上IIC的移植與實(shí)踐。 《一步到位!教你RT-Thread上設(shè)備IIC驅(qū)動(dòng)移植》 講完IIC,自然少不了SPI
    的頭像 發(fā)表于 09-30 15:35 ?4167次閱讀
    <b class='flag-5'>RT-Thread</b>上<b class='flag-5'>SPI</b>的細(xì)節(jié)內(nèi)容

    RT-Thread全球技術(shù)大會(huì):螢石研發(fā)團(tuán)隊(duì)使用RT-Thread的技術(shù)挑戰(zhàn)

    RT-Thread全球技術(shù)大會(huì):研發(fā)團(tuán)隊(duì)使用RT-Thread的技術(shù)挑戰(zhàn) ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 11:36 ?1526次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):螢石研發(fā)團(tuán)隊(duì)使用<b class='flag-5'>RT-Thread</b>的技術(shù)挑戰(zhàn)

    RT-Thread全球技術(shù)大會(huì):Kconfig在RT-Thread中的工作機(jī)制

    RT-Thread全球技術(shù)大會(huì):Kconfig在RT-Thread中的工作機(jī)制 ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 14:49 ?1806次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):Kconfig在<b class='flag-5'>RT-Thread</b>中的工作機(jī)制

    RT-Thread全球技術(shù)大會(huì):RT-Thread測(cè)試用例集合案例

    RT-Thread全球技術(shù)大會(huì):RT-Thread測(cè)試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:34 ?2353次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):<b class='flag-5'>RT-Thread</b>測(cè)試用例集合案例

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡(jiǎn)介 作為一名 RTOS 的初學(xué)者,也許你對(duì) RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會(huì)逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4960次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread文檔_RT-Thread 簡(jiǎn)介

    RT-Thread文檔_RT-Thread 簡(jiǎn)介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡(jiǎn)介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?10次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    RT-Thread文檔_SPI 設(shè)備

    RT-Thread文檔_SPI 設(shè)備
    發(fā)表于 02-22 18:36 ?3次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>SPI</b> 設(shè)備

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個(gè)賬號(hào)登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?5133次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)

    【S32K146 RT-Thread】之 使用SFUD組件驅(qū)動(dòng)spi flash

    【S32K146 RT-Thread】之 使用SFUD組件驅(qū)動(dòng)spi flash
    的頭像 發(fā)表于 11-21 01:05 ?1040次閱讀
    【S32K146 <b class='flag-5'>RT-Thread</b>】之 使用SFUD組件驅(qū)動(dòng)<b class='flag-5'>spi</b> flash