對於一般的處理器,系統啟動後是從0x00000000
位址開始讀取中斷向量表並引導程式的。但利用lpc2000
的儲存器重對映功能,我們可以將中斷向量表轉移至其它儲存器,而不一定要從0x00000000
這個位址讀取。
lpc2000
的這個功能是通過儲存器對映控制暫存器memmap
和boot
管腳來實現的。
4.1 暫存器memmap的取值
memmap 功能 描述
00 boot裝載程式模式 中斷向量從boot block重新對映。一般情況下,即為位址0x7fffe000
01 使用者flash模式 中斷向量不重新對映,它位於flash中。一般情況下,即為位址0x00000000
10 使用者ram模式 中斷向量從靜態ram重新對映。一般情況下,即為位址0x40000000
11 使用者外部儲存器模式 中斷向量從外部儲存器重新對映。一般情況下,即為位址0x80000000
特別注意,不正確的設定會導致器件的錯誤操作。
例如,每當產生乙個軟體中斷請求,arm
核心就從0x0000 0008
處取出32
位資料。這就意味著當memmap[1:0]=10(
使用者ram
模式)時,
從0x0000 0008
的讀數/
取指是對0x4000 0008
單元進行操作;當memmap[1:0]=00(boot
裝載程式模式)
時,從0x0000 0008
的讀數/
取指是對0x7fff e008
單元的資料進行操作(boot block
從片內rom
儲存器重新對映)
;如果memmap[1:0]=11(
使用者外部儲存器模式)
,從位址為0x8000 0008
的片外儲存器中讀取資料。
4.2 boot管腳的功能
lpc22xx
系列具有外部儲存器介面,boot[1:0]
腳的狀態控制著引導方式,見下表。引腳懸空,內部上拉電阻保證其高電平狀態。
boot1 boot1 引導方式 備註
0 0 cs0控制的8位儲存器 memmap[1:0]應設定為11
0 1 cs0控制的16位儲存器 memmap[1:0]應設定為11
1 0 cs0控制的32位儲存器 memmap[1:0]應設定為11
1 1 內部flash儲存器 memmap[1:0]應設定為01
注意:boot
管腳和memmap
暫存器的設定應該根據硬體電路的具體情況進行設定。若從32
位的外部儲存器引導,則memmap[1:0]
應設定為11
,boot
管腳設定為10
。對於lpc21xx
系列,沒有外部儲存器介面,只能設定memmap[1:0]
為01。
對於lpc2200
,無片內flash
,故不能設定memmap[1:0]
為01。
當然,也可以將p0.14
接地,強制晶元重啟後(/reset
為低)進入isp
狀態。4.3舉例:啟動**
#ifdef __debug
memmap = 0x3;
#endif
#ifdef __out_chip
memmap = 0x3;
#endif
#ifdef __in_chip
memmap = 0x1;
#endif
vue系列學習筆記
1.v if 在vue.js中,我們使用v if指令實現同樣的功能 利用v if控制該元素有還是沒有 template v if 因為v if是乙個指令,需要將它新增到乙個元素上,但如果想切換多個元素,可以把乙個元素當作包裝元素,並在上面使用v if,最終的渲染結果不會包含它 例如2.v show ...
YOLO系列學習筆記
此文參考 1 給乙個大小為448x448的輸入影象,首先將影象劃分成7 7的網格。2 對於每個網格,每個網格 2個bouding box 每個box包含5個 量 以及20個類別概率,總共輸出7 7 2 5 20 1470個tensor 3 根據上一步可以 出7 7 2 98個目標視窗,然後根據閾值去...
Redis系列學習筆記4 列表
以有序的方式儲存多個可重複的值 lpush key value value 將乙個或以上數量的值依次推入到列表的左端,命令返回新值被推入之後,列表目前包含的項數量。rpush key value value 將乙個或以上數量的值依次推入到列表的右端,命令返回新值被推入之後,列表目前包含的項數量。lp...