驅動僅提供32位刷寫的情況下如何完成刷寫單數位元組

来源:https://www.cnblogs.com/Ooonly/archive/2023/08/15/17631066.html
-Advertisement-
Play Games

## [Ooonly] 前情提要:需要刷寫一整個app程式,分包刷寫,每包位元組數為單數,要求CRC校驗正確。(晶元底層提供32位全字刷寫和16位半字刷寫,驅動只整合了32位全字刷寫函數) 使用32位刷寫函數出現的現象:通過keil5觀察記憶體空間發現一包刷寫成功一包刷寫失敗一包刷寫成功...一直迴圈到 ...


[Ooonly]

前情提要:需要刷寫一整個app程式,分包刷寫,每包位元組數為單數,要求CRC校驗正確。(晶元底層提供32位全字刷寫和16位半字刷寫,驅動只整合了32位全字刷寫函數)

使用32位刷寫函數出現的現象:通過keil5觀察記憶體空間發現一包刷寫成功一包刷寫失敗一包刷寫成功...一直迴圈到末尾,刷寫失敗的包開始幾個位元組為亂碼,不是包中的內容,且後面為全0xFF。


一、分析問題原因

首先理解驅動中32位寫入記憶體函數刷寫單數位元組是如何處理的,在每次刷寫完一次4位元組之後,判斷該包剩餘未刷寫位元組數是否小於4,若小於4則補充0xFF至4個位元組後一次刷入4位元組結束。

出現問題,由於一個完整的app程式要求每個包中間是完美連接的,即一個分包的末尾位元組的下一個位元組為下一包的首位元組。此時一個包的末尾位元組後有剛剛補充的0xFF,記憶體通常在一次刷寫之後會自動加上防寫,再次擦除之後才可再次刷寫。

一包刷寫成功之後,下一包的首位元組刷寫地址和上一包末尾補充0xFF衝突,造成刷寫失敗寫入隨機非0亂碼。

二、解決方法

更改驅動中32位全字刷寫函數,更改邏輯為:當前包刷寫剩餘位元組數小於4時,將剩餘位元組按順序放入一個4位元組緩存中,並記錄下剩餘位元組個數。當下一包開始刷寫時,刷寫地址需減去上一包剩餘位元組個數,並從首位元組開始補充上述4位元組緩存,形成一個由上一包的尾位元組與當前包首位元組組成的4位元組全字刷寫。最後需要額外判斷整個app是否即將刷寫完成,若當前包為最後一包,那麼就沒有下一包來補充含有剩餘位元組的4位元組緩存,此時按原有邏輯補充0xFF進行32位全字刷寫。


三、註意事項

由於該全字刷寫函數不一定只有app刷寫功能調用,還有例如參數保存等功能調用,所以建議使用巨集定義,若不是app刷寫功能則32位全字刷寫函數內容與原來保持一致。作者並因為是新手,對巨集定義理解不深刻,並沒有第一時間想到這種操作方式,使用if-else也實現了,但是想起來好像巨集定義更好看一點,哈哈。有想法、問題、意見可以評論或私信提出,歡迎交流轉載。

以上就是今天要講的內容,感謝您的關註。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在項目中有的時候可能會用的畫虛線或者設置線的流動效果,這個時候可能會使用到線控制項。 屬性 說明 描述 X1 起始x軸坐標 X1="10" Y1 起始Y軸坐標 Y1="10" X2 結束X軸坐標 X2="100" Y2 結束Y軸坐標 Y2="100" Stroke 線條顏色 Stroke="Red" ...
  • 開源的git管理工具確實非常方便,相信很多小伙伴工作了一些年都會有自己的代碼庫,有的時候做一個新的項目了,需要使用到以前用過的技術,這個時候在去翻找以前的項目,可能就找不到了,但是吧代碼庫都整理到git上就方便多了,而且有什麼新的代碼或者優化等等都可以在任何地方修改和同步,想想還是很厲害的。 下載安 ...
  • 作為.NET開發者,介面是C#必須掌握的知識點,介面是C#中實現多態和組件間互操作性的關鍵機制之一。 介面是一種抽象的類型,它定義了一組成員(方法、屬性、事件等)的規範,但沒有實現代碼。類可以實現一個或多個介面,以表明它們提供了特定的功能。 以下是每個.NET開發者應該掌握的C#介面知識點: **1 ...
  • ## 前言: 在當今信息化社會,網路數據分析越來越受到重視。而作為開發人員,掌握一門能夠抓取網頁內容的語言顯得尤為重要。在此篇文章中,將分享如何使用 .NET構建網路抓取工具。詳細瞭解如何執行 HTTP 請求來下載要抓取的網頁,然後從其 DOM 樹中選擇 HTML 元素,進行匹配需要的欄位信息,從中 ...
  • ## 引言 深拷貝是指創建一個新對象,該對象的值與原始對象完全相同,但在記憶體中具有不同的地址。這意味著如果您對原始對象進行更改,則不會影響到複製的對象 常見的C#常見的深拷貝方式有以下4類: 1. 各種形式的序列化及反序列化。 2. 通過反射機制獲取該對象的所有欄位和屬性信息。遍歷所有欄位和屬性,遞 ...
  • 本文介紹如何使用Centos伺服器部署Docker和Docker Compose. ### 背景信息 本文中的命令使用的是**root用戶**登錄執行, 若不是root用戶要註意許可權問題. 筆者這裡使用的是阿裡雲伺服器, Linux版本為Centos 7.9, 使用SSH遠程連接到伺服器. ### ...
  • ## 固件升級方案綜述 單片機的固件升級方式有很多種, 1、ICP:In Circuit Programing,簡單說就是在單片機開發時使用燒錄器升級程式,比如使用J-Link燒錄單片機程式。 2、ISP:In System Programing,在單片機內部實現了基於通信介面(如串口、I2C、SP ...
  • 開始之前簡單講下源和包管理器的概念,個人理解如下: 源就是平時我們win電腦上的360軟體管家、騰訊軟體管家、微軟商店這個意思,提供下載各類軟體包、安裝包的平臺; 包管理器就是win電腦上各類軟體的安裝包,例如qq.exe、360.msi等,需要下載後用指定的命令可以進行安裝、協助等操作,跟源配合使 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...