remap的那些事

2021-05-22 13:21:36 字數 1157 閱讀 6608

月14日 

今天還在看啟動**,看到target.c這裡。先說說target.c的職責。target.c檔案包含和目標初始化相關的

**,如remap設定、系統時鐘設定和儲存器加速模組設定等,以及irq和fiq的異常處理空函式。好吧,這裡

看到了remap就好好查資料把它搞清楚咯!其實我前面看過這個了,只是人上了年紀就健忘還得重新溫習下,

不過效果還真的不錯相信以後不會忘記了!哈哈!現在分享下吧!

remap---儲存器對映控制器

看到了嗎?顧名思義,它是來控制對映的,不要懷疑你的直覺,就是這樣!儲存器對映控制器用於改變從地

址0x00000000開始的中斷向量的對映。允許執行在不同儲存器空間中的**對中斷進行控制。*我估計有人看

到這裡會犯嘀咕了。當arm處理器上電或者reset之後,處理器從0x0取址。因此必須保證系統上電時,0x0處

有指令執行。所以,上電的時候,0x0位址處必定是rom或者flash。把ram對映到這裡是為了加快啟動速度、

方便更改異常向量表,加快中斷響應速度。現在應該有了點大概的了解了吧。哈哈!!!

我們來看看儲存器對映控制的注意事項和對映控制的對應關係

儲存器對映器只從處理arm異常(中斷)必須的3個資料來源(flash中斷向量、sram中斷向量和boot block中斷

向量,每個64個位元組)中選擇乙個使用。

它們的關係如下:

mammap[1:0]=00 :boot裝載程式模式。中斷向量從boot block重新對映

mammap[1:0]=01 :使用者flash模式。

mammap[1:0]=10 :使用者ram模式。

下面給個例子,每當產生乙個軟中斷請求,arm核心就從0x00000008處取出32位資料。當mammap[1:0]=10時,

從0x00000008的讀數/取指是對0x40000008單元進行操作。其他同理。

remap前後,不同之處就是ram的位置變了。為了達到remap的目的,就是加快啟動的速度和異常處理速度,一

定要初始化異常堆疊和建立異常向量表的。

簡而言之,位址重對映就是可以通過軟體配置來改變一塊儲存器實體地址的一種機制或方法。

參考remap詳細講解:http://hi.baidu.com/suqiniat/blog/item/561ac6d95450dd2910df9b31.html

AfxWinMain的那些事

afxwinmain函式原形如下 去掉了原來的很多沒用的注釋和累贅 cpp view plain copy print?int afxapi afxwinmain afxwininit函式 建立當前應用程式主線程 initinstance函式 內部通過create 函式來完成視窗的註冊,建立更新和顯...

void 的那些事

參考 void 是一種特殊的指標型別,可用於存放任意物件的位址。舉個例子 int p 0,pi p void pv p pv pd 但是一旦某個位址放到了void pv中,就不能利用 pv進行操作了 void 中存放的是未知物件的位址,所以無法操作該指標所指向的內容,但是可以對該指標進行操作,比如賦...

java hashset的那些事

hashset不能往集合中放置相同的元素.而如何判斷往集合中放置的元素是否相同,則是通過object類的兩個 hashcode 和equals 方法來確定的.具體說明如下 具體的判斷過程為 當使用hashset時,hashcode 方法首先就會被呼叫來判斷已在hashset中的物件的hash cod...