一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

TC3xx芯片DMU介紹

832065824 ? 來源:汽車電子嵌入式 ? 2023-08-31 14:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

AUTOSAR架構(gòu)圖下的Fls模塊對(duì)上(Fee)模塊提供統(tǒng)一的標(biāo)準(zhǔn)接口,但是具體的實(shí)現(xiàn)因不同的芯片而不一樣,Infineon公司的Fls模塊通過操作TC3xx芯片的DMU模塊實(shí)現(xiàn)Fls的功能。在具體介紹Fls模塊的功能之前,有必要先介紹下TC3xx芯片的DMU模塊。本文就來詳細(xì)介紹下TC37x芯片的DMU功能,希望能搞清楚以下問題:

問題1:站在軟件實(shí)現(xiàn)的角度來看,如何通過DMU實(shí)現(xiàn)讀,寫,擦除DFlash?

問題2:站在軟件實(shí)現(xiàn)的角度來看,如何通過DMU監(jiān)控讀,寫,擦除DFlash等任務(wù)完成的?

問題3:站在軟件實(shí)現(xiàn)的角度來看,如何通過DMU監(jiān)控讀,寫,擦除DFlash等任務(wù)出現(xiàn)Error的?

問題4:站在軟件實(shí)現(xiàn)的角度來看,在監(jiān)控到讀,寫,擦除DFlash等任務(wù)出現(xiàn)Error后如何恢復(fù)重來?

Note: 作者對(duì)芯片的各種模塊的硬件接口或者功能實(shí)現(xiàn)也不是很理解(非電子信息專業(yè)出身,屬于半路出家的半吊子……),但是站在軟件開發(fā)者的角度來看,個(gè)人理解,操作芯片模塊基本就是操作芯片模塊的控制寄存器來達(dá)到想要的功能,輪詢芯片的狀態(tài)寄存器判斷控制命令是否完成,監(jiān)控Error寄存器看是否發(fā)生錯(cuò)誤(發(fā)送錯(cuò)誤后一般通知上層后嘗試重置芯片模塊功能)。對(duì)于軟件開發(fā)者,搞清楚上述四個(gè)問題其實(shí)就是搞清楚在上述問題的上下文中如何控制和監(jiān)控寄存器。

46f1c5f0-47c0-11ee-97a6-92fbcf53809c.png

縮略詞

簡(jiǎn)寫 全稱
DMU Data Memory Unit
DPI Direct Processor Interface (to Local Flash Bank)
FSI Flash Standard Interface
SRI Shared Resource Interconnect
SIF Slave Interface

正文

1.DMU硬件架構(gòu)

CPU通過SRI總線能夠訪問/控制DMU,DMU通過FSI接口能夠控制DFLASH。CPU訪問/控制DMU可以通過軟件(我們寫代碼)實(shí)現(xiàn),DMU通過FSI訪問/控制DFLASH是硬件實(shí)現(xiàn)(軟件不不參與,軟件發(fā)錯(cuò)命令序列后只能輪詢DMU的狀態(tài)寄存器來獲取DMU訪問/操作DFLASH的結(jié)果)。

470ac5b4-47c0-11ee-97a6-92fbcf53809c.png

圖1:Non Volatile Memory (NVM) Subsystem

4724ad30-47c0-11ee-97a6-92fbcf53809c.png

圖2:Block diagram of DMU module

473effbe-47c0-11ee-97a6-92fbcf53809c.png

圖3:Block Diagram of the NVM module

2.DMU寄存器

DMU模塊相關(guān)的寄存器很多,這里我們只要了解DMU相關(guān)的控制,狀態(tài),錯(cuò)誤狀態(tài)三個(gè)寄存器就能理解絕大部分的功能。

47593e74-47c0-11ee-97a6-92fbcf53809c.png

2.1 DMU狀態(tài)寄存器

HF_STATUS狀體寄存器,標(biāo)識(shí)當(dāng)前Flash的狀態(tài)。比如,標(biāo)識(shí)當(dāng)前Flash是否在Page Mode(擦寫Flash時(shí)必須在這個(gè)模式下),F(xiàn)lash當(dāng)前是否Busy(Flash是否正在處理上一次的擦寫任務(wù))。

477c5b48-47c0-11ee-97a6-92fbcf53809c.png

D0BUSY: 標(biāo)識(shí)DFlash0是否處于Busy狀態(tài)。

D1BUSY:標(biāo)識(shí)DFlash1是否處于Busy狀態(tài)。

479cfe98-47c0-11ee-97a6-92fbcf53809c.png

Fls在進(jìn)行硬件操作前,會(huì)檢查DFlash是否Busy,如果Busy的話就不進(jìn)行任何操作。

47af6baa-47c0-11ee-97a6-92fbcf53809c.png

DFPAGE: 標(biāo)識(shí)DFlash是否處于Page Mode

DFPAGE: 標(biāo)識(shí)PFlash是否處于Page Mode

47fe6e76-47c0-11ee-97a6-92fbcf53809c.png

Fls在執(zhí)行Writesequence前都要先進(jìn)入到Page Mode

481b6cba-47c0-11ee-97a6-92fbcf53809c.png

4868fc0a-47c0-11ee-97a6-92fbcf53809c.png

Note: 進(jìn)入Page Mode后,F(xiàn)lash模塊才能夠接收寫入的數(shù)據(jù)

2.2 DMU控制寄存器

DMU控制寄存器HF_CONTROL并不是用來直接操作數(shù)據(jù)的寫入和擦除(數(shù)據(jù)的寫入和擦除由Command Sequence實(shí)現(xiàn),后面章節(jié)介紹),而是用來控制/使能一些Flash的全局功能(后面遇到了再展開介紹)。

4894c1be-47c0-11ee-97a6-92fbcf53809c.png

48c7604c-47c0-11ee-97a6-92fbcf53809c.png

48da5be8-47c0-11ee-97a6-92fbcf53809c.png

48ff633e-47c0-11ee-97a6-92fbcf53809c.png

2.3 錯(cuò)誤狀態(tài)寄存器

HF_ERRSR錯(cuò)誤狀態(tài)寄存器標(biāo)識(shí)當(dāng)前Flash有沒有發(fā)生錯(cuò)誤。對(duì)每個(gè)錯(cuò)誤類型的具體解釋和檢測(cè)到錯(cuò)誤后建議的軟件操作請(qǐng)參考后面的錯(cuò)誤處理章節(jié)。

492c680c-47c0-11ee-97a6-92fbcf53809c.png

4962e274-47c0-11ee-97a6-92fbcf53809c.png

4994d6bc-47c0-11ee-97a6-92fbcf53809c.png

49d0dcac-47c0-11ee-97a6-92fbcf53809c.png

Fls模塊在執(zhí)行Flash寫操作前也會(huì)先檢查Flash有沒有Error產(chǎn)生,如果有Error產(chǎn)生,則不進(jìn)行任何操作。

49e0ed7c-47c0-11ee-97a6-92fbcf53809c.png

3.DMU命令序列

3.1 讀Flash

對(duì)Flash的讀訪問是Memory mapped read,什么意思了?比如我們要讀0xAF001234這個(gè)起始地址處的一個(gè)uint32的數(shù)據(jù),我們可以直接操作內(nèi)存進(jìn)行讀:

uint32 Value = *((uint32 *)0xAF001234);

4a0b35f0-47c0-11ee-97a6-92fbcf53809c.png

3.2 寫Flash

但是對(duì)于Flash的寫(Programming)和擦除(Erase)操作不能直接操作內(nèi)存,需要通過特定的命令序列(Command Sequence),比如以下的操作就是無效的。

*((uint32 *)0xAF001234) = 0xFFFF;

實(shí)際對(duì)DFlash的寫操作需要一組命令序列(Command Sequences)來實(shí)現(xiàn)。DMU會(huì)把者一組命令序列翻譯過來去完成對(duì)DFlash的寫操作。寫的過程中的狀態(tài)和錯(cuò)誤通過HF_STATUS和HF_ERRSR寄存器標(biāo)識(shí)。DMU提供了一些Command Sequence供開發(fā)者使用。

4a1bd16c-47c0-11ee-97a6-92fbcf53809c.png

4a4573e6-47c0-11ee-97a6-92fbcf53809c.png

我們來分析一個(gè)Write Page的Command Sequence:

第一步:把PA(緩存要寫入數(shù)據(jù)的變量的地址)加載到DFlash Base Address + 0xAA50處

4a5e8354-47c0-11ee-97a6-92fbcf53809c.png

第二步:把xx00H(xx標(biāo)識(shí)的部分被忽略)這個(gè)值加載到DFlash Base Address + 0xAA58處

第三步:把xxA0H(xx標(biāo)識(shí)的部分被忽略)這個(gè)值加載到DFlash Base Address + 0xAA58處

第四步:把xxAAH(xx標(biāo)識(shí)的部分被忽略)這個(gè)值加載到DFlash Base Address + 0xAA58處

執(zhí)行Write Page需要注意:

1.Write Page命令序列需要在Load Page命令序列之后執(zhí)行

2.執(zhí)行完Write Page命令序列后,PageMode的標(biāo)志就會(huì)在HF_STATUS狀態(tài)寄存器中被設(shè)置

3.如果Flash不在PageMode下執(zhí)行Write Page操作,那么HF_ERRSR錯(cuò)誤狀態(tài)寄存器的Sequence Error(SQER)標(biāo)志就會(huì)被置位,如果PA地址值不在合肥的地址范圍內(nèi),SQER標(biāo)志也會(huì)被置位。

4.如果進(jìn)入Page Mode后數(shù)據(jù)太少,則沒有數(shù)據(jù)或太多數(shù)據(jù)通過“LoadPage”傳輸?shù)匠绦蚣彌_區(qū),“WrtePage”會(huì)對(duì)頁面進(jìn)行編程,但會(huì)設(shè)置序列錯(cuò)誤 (SQER)。 缺少的數(shù)據(jù)是使用程序集緩沖區(qū)的先前內(nèi)容進(jìn)行編程的

5.當(dāng)頁面“ PA ”位于具有有效寫入保護(hù)的Sector中,或者Flash模塊具有有效的全局讀取保護(hù)時(shí),Write Page就會(huì)執(zhí)行失敗并設(shè)置保錯(cuò)誤 Protection Error(PROER)。

6.當(dāng)寫入(Programming)過程中出現(xiàn)錯(cuò)誤,PVER錯(cuò)誤標(biāo)志就會(huì)被設(shè)置

7.如果DMU處于Cranking Mode或者Error Mode,執(zhí)行Write Page命令序列就會(huì)產(chǎn)生Sequence Error(SQER).

4a9143c0-47c0-11ee-97a6-92fbcf53809c.png

4aabf99a-47c0-11ee-97a6-92fbcf53809c.png

Write Page在代碼中的體現(xiàn):

4ad68070-47c0-11ee-97a6-92fbcf53809c.png

Note:

1.不要問為什么是這樣來實(shí)現(xiàn)對(duì)DFlash的操作,這是人家芯片廠商規(guī)定的,我們照著做就行。

2.命令序列很多,遇到了想了解的話,就按照Write Page這個(gè)分析過程去分析就行

4.DMU錯(cuò)誤處理

Infineon的芯片手冊(cè)中對(duì)每一種Error產(chǎn)生原因和出現(xiàn)Error后建議的操作都寫的非常詳細(xì),我們能找到地方并理解就好,這里僅介紹Sequence Error(SQER),其他自己去查手冊(cè)就好。

Sequence Error(SQER)產(chǎn)生的原因:

1.Comman的地址或者數(shù)據(jù)不正確,也就是沒有按照規(guī)定的CommandSequence來操作Flash

2.DMU處于Page Mode時(shí)又嘗試進(jìn)入Page Mode

3.Load Page命令序列不在Page Mode下執(zhí)行

4.Load Page命令序列混合32/64操作

……太多了,參考<< AURIXTC3XX_um_part1_v2.0.pdf>>以下章節(jié)

4b075b6e-47c0-11ee-97a6-92fbcf53809c.png

出現(xiàn)問題后怎么處理:

SQER錯(cuò)誤通常就是軟件Bug導(dǎo)致的,所有我們把軟件寫好,這些問題就不會(huì)出現(xiàn)。如果出現(xiàn)了這些Error,應(yīng)該把Error信息通知到應(yīng)用代碼。但是,可以使用“Clear Status”或“Resetto Read”命令序列清除此標(biāo)志,然后可以再次發(fā)出更正后的命令序列。

4b3ec31a-47c0-11ee-97a6-92fbcf53809c.png

5.DMU中斷和Trap

5.1中斷

DMU在以下截圖的事件觸發(fā)時(shí)可以觸發(fā)中斷,中斷使能和中斷處理函數(shù)需要我們?nèi)ヅ渲煤蛯?shí)現(xiàn),然后可以通過中斷來判斷事件完成或錯(cuò)誤發(fā)生。但是,對(duì)Flash操作的狀態(tài)獲取和錯(cuò)誤獲取一般采用輪詢的方式實(shí)現(xiàn)。

4b53e02e-47c0-11ee-97a6-92fbcf53809c.png

5.2Trap

同樣,DMU外設(shè)報(bào)告以下的Fatal Errors會(huì)觸發(fā)CPU進(jìn)入Trap。

4b91332a-47c0-11ee-97a6-92fbcf53809c.png

Note: 這些了解就好,好像在實(shí)際工程中沒有使用DMU中斷,也沒去管DMUTrap,回頭再仔細(xì)研究下。

6.總結(jié)

這篇文章的所有內(nèi)容都可以在Infineon的數(shù)據(jù)手冊(cè)中找到,但是對(duì)于初學(xué)者或者對(duì)硬件手冊(cè)不熟悉的朋友不容易抓到重點(diǎn)(動(dòng)不動(dòng)一個(gè)章節(jié)就是幾十上百頁的英文,確實(shí)看著就頭疼…),所以作者結(jié)合代碼梳理出個(gè)人認(rèn)為對(duì)于軟件開發(fā)者最為重要的內(nèi)容,希望各位對(duì)各位看官有所幫助,也希望對(duì)各位新人苦于看數(shù)據(jù)手冊(cè)有所啟發(fā)。

最后,咱們來來回答開頭提出的問題結(jié)束本文。

問題1:站在軟件實(shí)現(xiàn)的角度來看,如何通過DMU實(shí)現(xiàn)讀,寫,擦除DFlash?

答:通過Load Page和Write Page命令序列實(shí)現(xiàn)寫操作;通過Erase Logical Sector Range命令序列實(shí)現(xiàn)擦除操作;通過Memory mapped read直接讀Flash。

問題2:站在軟件實(shí)現(xiàn)的角度來看,如何通過DMU監(jiān)控讀,寫,擦除DFlash等任務(wù)完成的?

答:通過監(jiān)控HF_STATUS的D0BUSY/D1BUS標(biāo)志來監(jiān)控擦寫操作,讀不用監(jiān)控,直接讀取就行。

問題3:站在軟件實(shí)現(xiàn)的角度來看,如何通過DMU監(jiān)控讀,寫,擦除DFlash等任務(wù)出現(xiàn)Error

的?

答:通過監(jiān)控HF_ERRSR錯(cuò)誤狀態(tài)寄存器的錯(cuò)誤標(biāo)志來監(jiān)控讀,寫,擦除DFlash等任務(wù)出現(xiàn)Error

類型。

問題4:站在軟件實(shí)現(xiàn)的角度來看,在監(jiān)控到讀,寫,擦除DFlash等任務(wù)出現(xiàn)Error后如何恢復(fù)重來?

答:太多,這里就不在細(xì)講,具體參考數(shù)據(jù)手冊(cè)的Error Handing章節(jié)。

審核編輯:湯梓紅

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

    關(guān)注

    460

    文章

    52529

    瀏覽量

    441312
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5435

    瀏覽量

    124604
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9005

    瀏覽量

    153785
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    380

    瀏覽量

    22702

原文標(biāo)題:TC3xx芯片DMU介紹

文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    英飛凌TC3XX系列多核MCU學(xué)習(xí)筆記(1)

    聲明:本文是在學(xué)習(xí)英飛凌 TC3XX系列多核 MCU 過程中整理的筆記,便于后期復(fù)習(xí)!
    發(fā)表于 09-19 09:54 ?3722次閱讀
    英飛凌<b class='flag-5'>TC3XX</b>系列多核MCU學(xué)習(xí)筆記(1)

    TC3xx芯片的Endinit功能詳解

    上鎖Endinit。那什么是Endinit功能了? -- 本文就來詳細(xì)解鎖TC3xx芯片的Endinit機(jī)制。
    的頭像 發(fā)表于 11-27 09:23 ?3387次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的Endinit功能詳解

    TC3xx芯片時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解

    的Tick數(shù)就是基于模塊時(shí)鐘的)。本系列文章就來詳細(xì)介紹TC3xx芯片的時(shí)鐘系統(tǒng)及其具體配置。本文為TC3xx芯片時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解
    的頭像 發(fā)表于 12-01 09:37 ?3714次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解

    英飛凌TC3xx系列安全管理單元的使用

    本篇文檔主要用來介紹英飛凌基于AURIX-2G TriCore 1.6.2架構(gòu)的 TC3xx系列安全管理單元的使用。
    的頭像 發(fā)表于 12-07 09:29 ?3341次閱讀
    英飛凌<b class='flag-5'>TC3xx</b>系列安全管理單元的使用

    TC3xx SCR功耗應(yīng)該怎么評(píng)估?

    TC3xx SCR處于70kHz active狀態(tài),以及CAN WAKE UP也處于active,Tricore都掉電了,這個(gè)時(shí)候功耗是多少呢?SCR中不同的組件激活狀態(tài)下,功耗應(yīng)該怎么評(píng)估,有沒有
    發(fā)表于 01-19 08:28

    TC3XX寄存器讀寫時(shí)間過長(zhǎng)怎么解決?

    我目前在做TC3XX底層代碼優(yōu)化,經(jīng)過之前多次測(cè)試目前可以確定該系列芯片對(duì)單個(gè)寄存器地址的讀寫耗時(shí)超過100us。請(qǐng)問對(duì)于寄存器讀寫耗時(shí)你們官方有沒有確切的文件說明?還有就是既然寄存器讀寫時(shí)間那么長(zhǎng)100M的外設(shè)總線時(shí)鐘是否有意義?
    發(fā)表于 01-25 06:56

    TC3xx系列怎么禁用trap?

    目前在TC3xx調(diào)試flash讀寫功能,單獨(dú)運(yùn)行flash相關(guān)功能沒有問題,但將flash相關(guān)功能集成到工程中。操作pflash就會(huì)進(jìn)入trap中,查看了一些帖子說是要禁掉trap?請(qǐng)問怎么禁用trap?目前沒找到相關(guān)函數(shù)
    發(fā)表于 01-31 06:21

    TC3xx系列是否支持RTC功能?

    請(qǐng)教各位,TC3xx系列芯片是否支持RTC功能,目前要記錄snapshot的時(shí)間點(diǎn)(年月日時(shí)分秒)。
    發(fā)表于 02-02 07:53

    TC3xx的HSM中有沒有單調(diào)計(jì)數(shù)器?

    你好, 我看到 OPTIGA 有單調(diào)計(jì)數(shù)器,但我在 TC3xx 的 HSM 中確實(shí)找不到單調(diào)計(jì)數(shù)器。 能否確認(rèn)TC3xx的HSM中沒有單調(diào)計(jì)數(shù)器?
    發(fā)表于 03-05 07:56

    TSIM是否支持TC3xx系列在沒有硬件的情況下調(diào)試應(yīng)用程序?

    你好, TSIM是否支持TC3xx系列在沒有硬件的情況下調(diào)試應(yīng)用程序? AURIX TC3xx - Free Entry ToolChain 是否有助于實(shí)現(xiàn)上述目的?
    發(fā)表于 05-17 07:02

    請(qǐng)問tc3xx如何配置多個(gè)dedicatedRxBuffersNumber?

    tc3xx如何配置多個(gè)dedicatedRxBuffersNumber?
    發(fā)表于 04-21 07:53

    AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模塊

    ADC模塊的配置,和芯片特性強(qiáng)相關(guān)的地方還是有很多地方(AUTOSAR MCAL標(biāo)準(zhǔn)定義的配置項(xiàng)都是一樣的),本文將詳細(xì)介紹基于Infineon TC3xx芯片MCAL_ADC模塊特有
    的頭像 發(fā)表于 01-29 16:45 ?1.1w次閱讀

    AURIX? TC3xx NVM是非易失性存儲(chǔ)器學(xué)習(xí)筆記

    TC3xx芯片最多有6個(gè)內(nèi)核,每個(gè)核有自己的私有的Memory以及共有的Memory。
    發(fā)表于 06-19 09:09 ?1w次閱讀
    AURIX? <b class='flag-5'>TC3xx</b> NVM是非易失性存儲(chǔ)器學(xué)習(xí)筆記

    TC3xx芯片的MPU功能詳解

    在前面的文章文章中我們介紹了RH850-U2A的內(nèi)存保護(hù)單元(MPU),了解了MPU的概念以及在RH850-U2A上的具體使用流程,但是對(duì)于TC3xx系列芯片的的MPU功能不甚了解。
    的頭像 發(fā)表于 09-19 11:42 ?3584次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的MPU功能詳解

    深入解析TC3xx芯片中的SMU模塊應(yīng)用

    TC3xx芯片是德國(guó)英飛凌半導(dǎo)體公司推出的汽車級(jí)處理器芯片系列,其中的SMU(System Management Unit)模塊是其重要組成部分之一。SMU模塊在TC3xx
    的頭像 發(fā)表于 03-01 18:08 ?2645次閱讀