單片機啓動流程和存儲架構詳解

最近在給公司的ADAS DCU做內存分配(Memory Allocation),在這兒記錄一下相關知識點,也算是給中文社區做貢獻了。

 

目錄:

1. ECU啓動流程

2. 存儲空間解析

3. TC397單片機的Memory Map和一些備註

 

 

1. ECU啓動流程

圖總比文字直觀:

如上圖所示,上電以後其實就三步:  "運行ROM的啓動函數 -- 跳轉到FLASH裏的Startup函數 -- 跳轉到我們熟悉的main函數"  。 所以FLASH裏的Startup函數其實才是最先執行,且用戶可以修改的函數。只是它一般都被封裝好了,所以纔沒有接觸到。

如果你想寫BootLoader,就在Startup函數的基礎上改就ok了。

 

2. 存儲空間解析

 

以下將對上面那張圖的PFLASH,DFLASH等名詞進行解釋:

重要且有用的:

2.1  掉電後數據不會消失的FLASH,EEPROM

PFLASH: Program Flash用來存程序,價格便宜,配的容量也大,我用的這款足有16M

DFLASH: Data Flash用來存用戶數據,雖然叫Flash其實它是EEPROM,成本比FLASH高,我這款才1M多

FLASH 和EEPROM的最大區別是FLASH按扇區(section)擦寫,用來存儲程序這種大但不太頻繁更改的data,成本低。EEPROM則按字節(Byte)擦寫,存儲用戶數據這種小的,零碎的,總是在變的data時,擦寫速度快。

 

 

2.2 掉電後數據會消失的RAM

RAM:速度快,甚至會比Flash快50%以上。由於RAM空間有限,單片機運行的時候,程序存儲在flash,但數據會存儲在RAM,即CPU從flash中取指令,從RAM中抓數據。

 

重要但沒啥用的:【直接轉到第三章如果你趕時間】

擴展閱讀:

a: 當然你也可以可以通過#pragma CODE_SECTION等將程序先從Flash拷到RAM裏面,再在RAM裏面運行,來提升運行速度。詳見Running an Application from Internal Flash Memory 第四章“Copying Sections from Flash to RAM” [1]

b: 馮諾依曼,哈佛結構: [2]

 


2.3 鏈接文件(Linker File)

總的來說linker file用來定義數據和代碼具體存放在哪一塊。比如它會規定存儲在Flash的啓動函數_START()的存儲地址和BootROM裏面reset vector內預設的地址匹配,這樣復位以後就總會從啓動函數_START()開始執行

  • 即reg.h 裏面將寄存器的地址重命名,所以向寄存器寫其實就等於向該地址賦值
  • 而link file裏面則是將函數變量存在哪個地址做了規定

具體定義見下圖:

這張圖進一步解釋了linker file在存儲中的作用[3] :

 

 

 

3. TC397單片機的Memory Map和一些備註

先來一張從用戶手冊裏拿來的單片機Memory Map:

 

 

可以看到:

1. 對這款6核ECU,core0到5都有自己的專屬FLASH,大小爲3M(core5是1M),讀取它有專屬的接口FPIn,速度快 

2. 每個core內部都有16k的program cache和16k的data cache。 PSPR和DSPR稍大,看起來是2級緩存

3. 這6個core沒有太大的區別,唯一就是core0和core1的DSPR(data scrachpad RAM)大一些。240KB,其他的core是96KB

4. 可以用的RAM還有LMU,DAM和4M的EMEM。但根據datasheet,DAM不支持ASIL B及以上的軟件【becasue of hardware safety mechanism】

5. 對於第一條裏提到的FLASH,對於同一塊物理存儲空間。它們可以在地址0x8000,0000通過總線進行cache access,也可以在地址0xA000,0000通過總線進行non-cache access, 這是比較有意思的

6. 因爲是TC397 -ADAS,所以有額外的EMES,SPU,RIF,CIF以及擴展的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 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章