微控制器啟動流程和儲存架構詳解

2021-09-29 09:52:00 字數 2308 閱讀 5322

最近在給公司的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中抓資料。

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

擴充套件閱讀:

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

2.3 鏈結檔案(linker file)

總的來說linker file用來定義資料和**具體存放在哪一塊。比如它會規定儲存在flash的啟動函式_start()的儲存位址和bootrom裡面reset vector內預設的位址匹配,這樣復位以後就總會從啟動函式_start()開始執行

具體定義見下圖:

這張圖進一步解釋了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. 2. 

3. 

51微控制器 儲存

8051是傳統的8位微控制器,一般為256b 資料儲存器ram,4k程式儲存器rom 8052有384bytes的ram,8k的rom 在51系列中可定義的資料型別有data,idata,xdata,pdata,bdata data 指晶元核心中位址0x00 0x7f的128個位元組ram區域和4個...

微控制器 ADC詳解

之前有說到,計算機世界裡,只有數字量0和1,那你有沒有想過乙個問題,那要不是數字量怎麼表示。比如這樣。他在微控制器中是怎樣儲存及傳輸的呢?理論篇 數字量 在時間上和數量上都是離散的物理量稱為數字量。把表示數字量的訊號叫數碼訊號。把工作在數碼訊號下的電子電路叫數位電路。數字量由多個開關量組成。如三個開...

詳解51微控制器

例如 at89s51 stc89c51 stc89c52 stc90c516等等這些微控制器核心都為80c51,所以核心為80c51的微控制器都屬於51微控制器。微控制器是一種數字整合晶元,數位電路中只有兩種電平 高電平和低電平 計算機串列埠使用的是rs232電平 點亮led燈只需要控制io口輸出相...