单片机断电后静态存储区里面还有数据吗_单片机启动流程和存储架构详解
最近在給公司的ADAS DCU做內(nèi)存分配(Memory Allocation),在這兒記錄一下相關(guān)知識(shí)點(diǎn),也算是給中文社區(qū)做貢獻(xiàn)了。
目錄:
1. ECU啟動(dòng)流程
2. 存儲(chǔ)空間解析
3. TC397單片機(jī)的Memory Map和一些備注
1. ECU啟動(dòng)流程
圖總比文字直觀:
?
如上圖所示,上電以后其實(shí)就三步: "運(yùn)行ROM的啟動(dòng)函數(shù) -- 跳轉(zhuǎn)到FLASH里的Startup函數(shù) -- 跳轉(zhuǎn)到我們熟悉的main函數(shù)" 。 所以FLASH里的Startup函數(shù)其實(shí)才是最先執(zhí)行,且用戶可以修改的函數(shù)。只是它一般都被封裝好了,所以才沒(méi)有接觸到。
如果你想寫B(tài)ootLoader,就在Startup函數(shù)的基礎(chǔ)上改就ok了。2. 存儲(chǔ)空間解析
以下將對(duì)上面那張圖的PFLASH,DFLASH等名詞進(jìn)行解釋:
重要且有用的:
2.1 掉電后數(shù)據(jù)不會(huì)消失的FLASH,EEPROM
PFLASH: Program Flash用來(lái)存程序,價(jià)格便宜,配的容量也大,我用的這款足有16M
DFLASH: Data Flash用來(lái)存用戶數(shù)據(jù),雖然叫Flash其實(shí)它是EEPROM,成本比FLASH高,我這款才1M多
FLASH 和EEPROM的最大區(qū)別是FLASH按扇區(qū)(section)擦寫,用來(lái)存儲(chǔ)程序這種大但不太頻繁更改的data,成本低。EEPROM則按字節(jié)(Byte)擦寫,存儲(chǔ)用戶數(shù)據(jù)這種小的,零碎的,總是在變的data時(shí),擦寫速度快。2.2 掉電后數(shù)據(jù)會(huì)消失的RAM
RAM:速度快,甚至?xí)菷lash快50%以上。由于RAM空間有限,單片機(jī)運(yùn)行的時(shí)候,程序存儲(chǔ)在flash,但數(shù)據(jù)會(huì)存儲(chǔ)在RAM,即CPU從flash中取指令,從RAM中抓數(shù)據(jù)。
重要但沒(méi)啥用的:【直接轉(zhuǎn)到第三章如果你趕時(shí)間】
擴(kuò)展閱讀:
a: 當(dāng)然你也可以可以通過(guò)#pragma CODE_SECTION等將程序先從Flash拷到RAM里面,再在RAM里面運(yùn)行,來(lái)提升運(yùn)行速度。詳見(jiàn)Running an Application from Internal Flash Memory 第四章“Copying Sections from Flash to RAM” [1]
b: 馮諾依曼,哈佛結(jié)構(gòu): [2]
?
2.3 鏈接文件(Linker File)
- 即reg.h 里面將寄存器的地址重命名,所以向寄存器寫其實(shí)就等于向該地址賦值
- 而link file里面則是將函數(shù)和變量存在哪個(gè)地址做了規(guī)定
具體定義見(jiàn)下圖:
?
這張圖進(jìn)一步解釋了linker file在存儲(chǔ)中的作用[3] :
?
3. TC397單片機(jī)的Memory Map和一些備注
先來(lái)一張從用戶手冊(cè)里拿來(lái)的單片機(jī)Memory Map:
?
可以看到:
1. 對(duì)這款6核ECU,core0到5都有自己的專屬FLASH,大小為3M(core5是1M),讀取它有專屬的接口FPIn,速度快
2. 每個(gè)core內(nèi)部都有16k的program cache和16k的data cache。 PSPR和DSPR稍大,看起來(lái)是2級(jí)緩存
3. 這6個(gè)core沒(méi)有太大的區(qū)別,唯一就是core0和core1的DSPR(data scrachpad RAM)大一些。240KB,其他的core是96KB
4. 可以用的RAM還有LMU,DAM和4M的EMEM。但根據(jù)datasheet,DAM不支持ASIL B及以上的軟件【becasue of hardware safety mechanism】
5. 對(duì)于第一條里提到的FLASH,對(duì)于同一塊物理存儲(chǔ)空間。它們可以在地址0x8000,0000通過(guò)總線進(jìn)行cache access,也可以在地址0xA000,0000通過(guò)總線進(jìn)行non-cache access, 這是比較有意思的
6. 因?yàn)槭荰C397 -ADAS,所以有額外的EMES,SPU,RIF,CIF以及擴(kuò)展的HSM
Reference:
1. http://www.ti.com/lit/an/spra958l/spra958l.pdf
2. https://blog.csdn.net/jj163zhuangzi/article/details/47088843
3. http://downloads.ti.com/docs/esd/SLAU131U/introduction-to-sections-stdz0691509.html
4. http://m.elecfans.com/article/582174.html
總結(jié)
以上是生活随笔為你收集整理的单片机断电后静态存储区里面还有数据吗_单片机启动流程和存储架构详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python中random什么意思_py
- 下一篇: git checkout 单个文件_gi