在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

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

掃碼添加小助手

加入工程師交流群


前言

一、


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

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

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

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

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

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

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

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,驅(qū)動會嘗試訪問next指向的無效地址,導(dǎo)致非法訪問異常。

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

在RT-Thread的官方wiki示例可以看到,在定義一個spi message時,需要操作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)也對next進(jìn)行了操作,并且做了相關(guān)注釋說明

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

先楫BSP適配

三、


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

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

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

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

先楫BSP對DSPI和QSPI的支持

四、


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

怎么開啟這三種模式,可以通過menuconfig進(jìn)入到對應(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時,對應(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ū)動異常的常見原因,開發(fā)者需嚴(yán)格遵循RT-Thread規(guī)范。

先楫BSP優(yōu)勢

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

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

    關(guān)注

    17

    文章

    1790

    瀏覽量

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

    關(guān)注

    1

    文章

    92

    瀏覽量

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

    關(guān)注

    32

    文章

    1385

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

    基于RT-ThreadSPI通訊

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

    RT-Thread編程指南

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

    RT-Thread用戶手冊

    RT-Thread用戶手冊——本書是RT-Thread的編程手冊,用于指導(dǎo)在RT-Thread實(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ū)動移植》 講完IIC,自然少不了SPI
    的頭像 發(fā)表于 09-30 15:35 ?4170次閱讀
    <b class='flag-5'>RT-Thread</b>上<b class='flag-5'>SPI</b>的細(xì)節(jié)內(nèi)容

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

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

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

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

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

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

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

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

    RT-Thread文檔_RT-Thread 簡介

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

    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,弄個賬號登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?5141次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)

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

    【S32K146 RT-Thread】之 使用SFUD組件驅(qū)動spi flash
    的頭像 發(fā)表于 11-21 01:05 ?1047次閱讀
    【S32K146 <b class='flag-5'>RT-Thread</b>】之 使用SFUD組件驅(qū)動<b class='flag-5'>spi</b> flash
    主站蜘蛛池模板: 好硬好湿好爽再深一点h | 午夜老司机永久免费看片 | 四虎永久在线精品视频免费观看 | 亚洲午夜精品久久久久久抢 | 四虎影院在线观看免费 | 四虎永久地址4hu紧急入口 | 亚洲综合狠狠 | 色妞综合 | 亚洲精品久久片久久 | 18视频网站在线观看 | 在线免费观看黄色小视频 | 69女poren60| 日产精品卡二卡三卡四卡无卡乱码 | 综合激情五月婷婷 | 欧美视频精品一区二区三区 | 日本高清网站 | 国产午夜在线观看视频 | 午夜寂寞视频在线观看 | 另类专区欧美 | 上一篇26p国模 | 狠狠躁夜夜躁人人爽天天天天 | 欧美男人天堂网 | 性色视频在线 | 黄在线观看网站 | 天天综合网天天综合色 | 日本免费精品视频 | 欧美猛交lxxxxxxxxx | 亚洲欧洲无码一区二区三区 | 免费欧美| 免费黄色大片网站 | 中国农村一级片 | 与子乱刺激对白在线播放 | 97狠狠操 | 日本a级免费 | 操亚洲| 黄色网 在线播放 | 日本免费小视频 | 中文字幕亚洲一区二区三区 | 操美女视频网站 | 久久青草18免费观看网站 | 午夜在线视频免费观看 |