TC3xx NvM小細節解讀

目錄

1.FlsLoader Driver和FlsDmu Driver

2. FlsLoader小細節

3.小結


大家好,我是快樂的肌肉,今天聊聊TC3xx NvM相關硬件細節以及MCAL針對NvM的驅動。

1.FlsLoader Driver和FlsDmu Driver

在最開始做標定的時候,認為標定數據既然是數據,那么想當然就應該放置到DFlash;

但是做診斷的同事就納悶了:那DTC、DID這些數據咋和標定數據區分呢?還得預留一段空間給標定數據,沒這么搞過呀。

后來老板數你要么就用FlsLoader的接口,把數據存到PFlash,不要和診斷內容攪到一起了。

所以當時問題就出來了:FlsLoader接口是啥?為啥在一個包里既有Fls_Dmu Driver,還有FlsLoader Driver。

今天在整理筆記的時候翻到了,又細讀了相關代碼,覺得很有意思,分享給大家。

英飛凌針對TC3xx發布了多個MCAL包,包括Basic和CD(Complex Driver) package;

  • Basic Package里提供了Fee Driver和Fls_Dmu Driver;
  • CD Package里提供了FlsLoader Driver。

Fls_Dmu Driver

該驅動用于支持AUTOSAR中定義的標準功能,主要針對DFlash0的初始化和讀寫擦,因此它這個scope僅限于DFlash。

這是符合CP AUTOSAR FlashDrvie的Scope定義(僅用于Flash EEPROM):

In application mode of the ECU, the flash driver is only to be used by the Flash EEP
ROM emulation module for writing data. It is not intended to write program code to
flash memory in application mode. This shall be done in boot mode which is out of
scope of AUTOSAR.

那如果想要刷寫PFlash上的內容,就得在復雜驅動里找找答案了,例如FlsLoader Driver

FlsLoader Driver

用于操作所有PFlash 和DFlash0,包括初始化、PFlash的讀寫擦,以及針對Flash的上鎖和解鎖。

有了這個理解之后,我們再來看看代碼里的小細節。

2. FlsLoader小細節

?FlsLoader_Erase接口很有意思,他的入參包括TargetAddress和Length;我們很容易想當然這里給的參數就應該是目標擦除地址和長度(0x10000),但實際上再往下看代碼邏輯時會發現這個Length對應的是即將要擦除的Sector個數,這樣就對應的是DMU 命令序列 Erase sector nn。

因此調用該接口時應該簡單計算下需要擦幾個Sector,也不是以前的目標地址+實際長度。

我們接著手冊看看關于該命令序列出現SQER(Sequence Error),最讓我困惑的是關于PFlash Size的判斷,如下:

以TC37x為例,明明有2個PFlash Bank,每個Bank容量為3MB,但為什么每次只能擦除512K/16K = 32?,難道說這里面有什么物理限制嗎?

我們來看看PFlash的結構組成,它是有3個1 MB物理Sector組合為一個3MB的Bank,每個物理Sector劃分為64個邏輯Sector(64*16),如下:

手冊里特別強調的是每個物理Sector之間是獨立的,并且最大Erase Size為512KB,因此我們在代碼邏輯里首先會看到判斷是否超最大擦除大小了,這點我最開始想了很久,如下:

?其次,如果是跨物理Sector的擦寫,在代碼實現里還特別多出了一步:判斷是否超出了1MB的范圍,如超出了,需要使用兩次erase cmd命令序列,如下圖:

這里確實很神奇,不知道這個是否和本身它的這個Flash IP特性相關,不支持跨PS擦除。

3.小結

分析它的代碼,主要還是要完善自己的驅動知識庫,感覺每家的Flash操作大不相同,所以多看多學,才能見怪不怪,哈哈。?

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

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

相關文章

安裝easy-handeye

一、aruco_ros配置 mkdir -p ~/ros_ws/src cd ~/ros_ws/src git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git cd .. catkin_make 二、visp配置(需要聯外網下載東西,不然會一直出問題) sudo apt-get install ros-melodic-…

比賽獲獎的武林秘籍:02 國獎秘籍-大學生電子計算機類競賽快速上手的流程,小白必看

比賽獲獎的武林秘籍:02 國獎秘籍-大學生電子計算機類競賽快速上手的流程,小白必看 摘要 本文主要介紹了大學生參加電子計算機類比賽(電賽、光電設計大賽、計算機設計大賽、嵌入式芯片與系統設計大賽等比賽)的流程和涉及到的知識…

3dmax全景圖用什么渲染軟件好?渲染100邀請碼1a12

全景圖是常見的效果圖類型,常用于展示大型空間,如展廳、會議室等。全景圖的制作需要渲染,下面我介紹幾個常用的渲染軟件分享給大家。 1、V-Ray:十分流行的渲染引擎,功能強大,它提供了高質量的光線追蹤技術…

六、資產安全—信息分級資產管理與隱私保護練習題(CISSP)

六、資產安全—信息分級資產管理與隱私保護(CISSP): 六、資產安全—信息分級資產管理與隱私保護(C

Vue實現文件預覽和下載功能的前端上傳組件

Vue實現文件預覽和下載功能的前端上傳組件 一、前言1.準備工作1.1 創建 Vue 組件1.2 組件說明 2.注意事項 一、前言 在前端開發中,文件上傳和預覽是常見的功能需求之一。本文將介紹如何利用 Vue.js 結合 Element UI 的上傳組件(el-upload)實…

RAM和ROM的區別

RAM和ROM的區別 RAM和ROM都是用來存東西的,比如我們熟悉的CPU緩存、電腦和手機的內存就是屬于RAM,而固態硬盤、U盤,還有我們買手機時候說的32G、64G的存儲空間,就屬于ROM。RAM和ROM的區別,簡單說就是RAM在斷電之后&am…

正則表達式語法+常用正則表達式

1. 簡介 1> 正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為"元字符"),可以用來描述和匹配字符串的特定模式 2> 正則表達…

沙龍回顧|MongoDB如何充當企業開發加速器?

數據不僅是企業發展轉型的驅動力,也是開發者最棘手的問題。前日,MongoDB攜手阿里云、NineData在杭州成功舉辦了“數據驅動,敏捷前行——MongoDB企業開發加速器”技術沙龍。此次活動吸引了來自各行各業的專業人員,共同探討MongoDB的…

Java使用線程實現異步運行

在Java中,實現異步運行的一個常用方式是使用Thread類。下面,我將給出一個詳細且完整的示例,該示例將創建一個簡單的異步任務,該任務將模擬一個耗時的操作(比如,模擬網絡請求或文件處理)。 1. 使…

【MySQL】mysql訪問

mysql訪問 1.引入MySQL 客戶端庫2.C/C 進行增刪改3.查詢的處理細節4.圖形化界面訪問數據庫4.1下載MYSQL Workbench4.2MYSQL Workbench遠程連接數據庫 點贊👍👍收藏🌟🌟關注💖💖 你的支持是對我最大的鼓勵&a…

第9章:Electron的安全性

在開發Electron應用時,安全性是一個非常重要的考慮因素。由于Electron應用可以訪問Node.js的全部API,以及使用Web技術開發界面,因此需要特別注意安全問題。本章將介紹如何提高Electron應用的安全性,包括禁用不必要的功能、設置內容…

Javascript中Object、Array、String

Object 在JavaScript中,Object 類型是一種復雜的數據類型,用于存儲鍵值對集合。它提供了多種方法來操作這些鍵值對,以及執行其他常見的操作。這里,我列出了一些 Object 類型的常見方法或特性,它們在日常編程中非常有用…

開思通智網-科技快報20240704:全球首個,人工智能之城,AI填報志愿

【本周新進展】 天大開發全球首個可開源片上腦機接口智能交互系統 https://tech.opensnn.com/chip/article/2826792 AI系統繪出“多彩”大腦布線圖 https://news.sciencenet.cn/htmlnews/2024/7/525678.shtm 北京亦莊將建全域人工智能之城 https://tech.opensnn.com/chip/arti…

基于深度學習的文本框檢測

基于深度學習的文本框檢測(Text Box Detection)是一項重要的計算機視覺任務,旨在從圖像中自動檢測和定位文本區域。它在光學字符識別(OCR)、自動文檔處理、交通標志識別等領域具有廣泛的應用。以下是關于這一領域的系統…

快遞物流運輸中的鎖控系統優缺點探討

一、物流運輸中鎖控系統的重要性 1.1 保障貨物安全 在物流運輸過程中,貨物安全是物流公司最為關注的問題之一。傳統機械鎖雖然在一定程度上提供了安全保障,但其缺點逐漸暴露,成為物流運輸中的一個痛點。 易被破解:傳統機械鎖通…

drawio打開不顯示,不在當前屏幕的解決方案

如果把drawio拖在外接顯示器,關機前沒有拖回主屏幕,那么下次打開它時如果用的不是原來那個顯示器,它就無法正常顯示。在任務欄上能看到有它,但是就是顯示不出來。 經過卸載和其他的方式沒有解決,就想到了,應…

基于MCU平臺的HMI開發的性能優化與實戰(下)

繼上篇《基于MCU平臺的HMI開發的性能優化與實戰(上)》深入探討了提升MCU平臺HMI開發效率和應用性能的策略后,本文將專注于NXP i.MX RT1170 MCU平臺的儀表盤開發實踐。我們將重點介紹Qt for MCUs的優化技巧,展示如何通過實際案例應…

Qt:7.QWidget屬性介紹(cursor屬性-光標形狀、font屬性-控件文本樣式、tooltip屬性-控件提示信息)

目錄 一、cursor屬性-光標形狀: 1.1cursor屬性介紹: 1.2獲取當前光標形狀——cursor(): 1.3 設置光標的形狀——setCursor(): 1.4 設置自定義圖片為光標: 二、font屬性-控件文本樣式: 2.1font屬性介紹…

antd-Table-可視化數據滾動

代碼 // 使用方式 const Index () > {useScroll();return <Table />; }import { useEffect, useRef, useState } from react;export const useScroll (() > {let timer;function start() {const [isScroll, setIsScroll] useState(true);const scrollTopRef u…

代碼隨想錄算法訓練營Day59|110.字符串接龍、105.有向圖的完全可達性、106.島嶼的周長

字符串接龍 110. 字符串接龍 (kamacoder.com) 主要參考代碼隨想錄 代碼隨想錄 (programmercarl.com) 目標&#xff1a;得到從beginStr轉變為endStr所需的最少步數 過程&#xff1a;每次變換一個字母&#xff0c;每次變換的結果要在strList中。 對于一個圖來說&#xff0c;…