⑴ 如何配置寄存器的地址
配置寄存器是一個16位的虛擬寄存器,用於指定路由器啟動的次序、中斷參數和設置控制台波特率等。該寄存器的值通常是以十六進制來表示的。
利用配置命令config register可以改變配置寄存器的值。
2. 啟動次序
配置寄存器的最後4位,指定的是,路由器在啟動的時候必須使用的啟動文件所在的位置:
<>
l 0x0001指定從ROM中啟動
l 0x0002-0x000F的值則參照在NVRAM配置文件中命令boot system指定的順序
如果配置文件中沒有boot system命令,路由器會試圖用系統Flash存儲器中的第一個文件來啟動,如果失敗,路由器就會試圖用TFTP從網路上載入一個預設文件名的文件(由boot域的值確定,如cisco2-4500),如果還失敗,系統就從啟動Flash中載入啟動。
預設的文件名是採用單詞cisco、啟動位的值以及路由器類型或處理器的名稱構成。例如某台4500上啟動欄位設為3,那麼預設的啟動文件名就是cisco3-4500。
以MC3819(CPU型號,大多採用MOTOROLA)路由器啟動順序為例,下面就是啟動的四個階段:
1. 系統自舉
2. 啟動載入(讀取配置信息和啟動Flash文件系統的最小功能)
3. 啟動系統IOS鏡像文件
4. 介面初始化/系統重啟
3. 配置寄存器
3.1. 各位的含義
通過show version命令可以看到路由器配置寄存器的值,預設情況下為0x2102。這四個數字每一個均有著重要的意義。下面從低到高進行一一的介紹。
第一個2,還原成二進制為0010,這一部分為boot field,對路由器IOS的啟動起著至關重要的作用,當boot field 的值為2-15中的任何一個時,路由器屬於正常啟動,當此值為0時,路由器啟動後會進入ROMMON模式,此值為1時,路由器進入到RXBOOT模式(2500路由器的FLASH在配置寄存器的值為2102時屬性為只讀,如果要升級IOS必須把寄存器的值修改為2101)
0,還原成二進制為0000,這四位中,起關鍵作用的是第三位(即整個寄存器裡面的BIT 7),值為0,當路由器啟動後會從NVRAM裡面的配置文件調到RAM里運行,值為1,路由器啟動後會忽略NVRAM的配置(這就是我們在進行PASSWORD RECOVERY時把寄存器的值改為2142的原因 )
1,還原成二進值為0001,我們來關注BIT8,值為0時,路由器在正常運行模式下CTRL + BREAK無效;值為1,路由器在任何運行模式下只要按下CTRL + BREAK均會立即進入ROMMON模式。
第二個2,還原成二進制為0100,其中BIT13,當值為0時,路由器如果進行網路啟動會嘗試無窮多次。當值為1時,路由器最多進行5次的網路啟動嘗試。
寄存器位數 十六進制 功能描述
0-3(啟動次序) 0x0000-0x000F 啟動欄位:0000-停留在引導提示符下(>或rommon >下)0001-從ROM中引導,
4 - 未使用
5 - 未使用
6 0x0040 配置系統忽略NVRAM中的配置信息
7 0x0080 啟動OEM位
8 0x0100 設置之後,暫停鍵在系統運行時無法使用;如果沒有設置,系統會進入引導監控模式下(rommon>)
9 -
10 0x0400 全0的就是廣播地址
11-12 0x0800到0x1800 控制台線路速度,默認的就是00即9600bps
13 0x2000 如果啟動失敗,系統以預設ROM軟體啟動
14 0x4000 -
15 0x8000 該設置能夠啟用診斷消息,並忽略NVRAM的內容
典型參數
l 0x2102: 運行過程中中斷鍵被屏蔽,路由器會查看NVRAM中配置的內容以確定啟動次序,如果啟動失敗會採用預設的ROM軟體進行啟動。
l 0x2142:恢復密碼時候使用。忽略NVRAM配置信息而進入初始配置對話模式中去
3.2. 密碼恢復
路由器的密碼恢復是將路由器重啟、中斷再進入ROM監控模式,將設備設置為忽略配置文件,然後再重啟,退出初始配置對話模式,配置存儲器,然後讀出或重新設置密碼即可。
根據路由器的處理器不同,需要分兩種情況進行處理。
l 適用於精簡指令集計算機(RISC):
1. 關掉路由器電源,然後重新打開電源
2. 按下break鍵或別的鍵盤組合將路由器置入ROM監控模式。Break鍵對不同計算機或終端軟體是不同的,按鍵的次序可能是CTRL-D,CTRL-Break等。
3. 在rommon> 提示符下,鍵入conf reg 0x2142以設置路由器下一次從Flash載入啟動的時候不要載入NVRAM中的啟動配置信息
4. 鍵入reset命令,路由器將重啟但忽略NVRAM中的配置信息
5. 路由器運行設置對話模式。輸入no或按下CTRL-C以跳過初始設置對話模式
6. 在router>提示符下輸入enable以進入特權執行模式
7. 使用config memory或者 startup running命令將啟動配置信息拷貝到運行配置中去。不要輸入config terminal,否則將覆蓋NVRAM中的配置信息
8. show running查看配置信息的內容,
9. 輸入config terminal進入配置模式,根據需要改變線路密碼或enable密碼
10. 這時所有的介面都處於關閉狀態,因此在每一個需要使用的介面上no shutdown
11. 輸入config reg 0x2102命令設置路由器下次按照正常的方式啟動
12. 按下CTRL-Z或End退出配置模式
13. write memory或 run start命令保存所有所作的更改
14. 重啟路由器並驗證密碼
非RISC:
1. 關掉路由器電源,然後重新打開電源
2. 按下break鍵或其他鍵進入ROM 監控模式
3. 在>提示符下,輸入o命令以記錄配置寄存器的當前值(通常是0x2102或0x0102)
4. 鍵入o/r 0x2142設置路由器下次啟動不要載入NVRAM中的配置信息
5. 鍵入i重啟路由器
6. 以下步驟和RISC處理器相關步驟一樣
4. 路由器工作模式
l ROM監控模式:路由器已啟動但是沒有載入任何IOS,提示符為:>或rommon>
l 啟動模式:啟動Flash里含有最小化IOS啟動程序,提示符為:router(boot)>
l 用戶執行模式:成功載入啟動了一份完整的IOS代碼,可以顯示系統信息、執行基本的測試等。不能查看配置文件和使用debug命令
l 特權執行模式:完全訪問的第二級模式。可以現實系統設置和狀態信息,可以進入配置模式,可以運行debug命令
l 配置模式:在enable模式中輸入config terminal命令進入配置模式。可以對介面、路由器以及線路配置進行設置
l 初始配置對話模式;啟動時候,如果路由器沒有進行配置(可能是因為路由器是新的或配置文件被write erase命令刪除了)的話,進入系統配置對話模式。可以依次進行主機名、執行密碼以及enable密碼的設置;還可對網路管理介面的IP和子網掩碼配置。然後保存到NVRAM中去。
⑵ 關於埠寄存器和鎖存器的問題
針對C8051F系類單片機的埠初始化步驟如下:
1. 用埠輸入方式寄存器(PnMDIN)選擇所有埠引腳的輸入方式(模擬或數字)。
2. 用埠輸出方式寄存器(PnMDOUT)選擇所有埠引腳的輸出方式(漏極開路或推挽)。
3. 用埠跳過寄存器(PnSKIP)選擇應被交叉開關跳過的那些引腳。
4. 將引腳分配給要使用的外設(XBR0、XBR1、XBR2)。
5. 使能交叉開關(XBARE = 1)。
埠鎖存器是一個硬體電路模塊,用於輸出信號穩定和輸入信號鎖存的具體固件。
埠寄存器是為了方便程序員讀寫埠數據而在數據存儲空間開辟的一個內存單元。每個埠寄存器都有其自己固定的地址,每個單元是個8位的空間,對應埠的8個引腳。
編程序的時候我們很少操作到鎖存器,因為一般情況下寄存器的內容和鎖存器的內容應該是一致的。但是在微控制器中,一條匯編寫埠代碼(讀埠代碼)是分好幾條微控制指令的:
首先是寫匯流排(即,寫埠鎖存器,匯流排和鎖存器向連);
然後是控制輸出。
為什麼要在配置引腳為輸入的時候向寄存器寫「1」呢。這要看內部電路圖,如下:
很明顯,要讀入數據Q2必須處於截止狀態才行,否則讀入的數據就是0.這就是向埠寫「1」的作用。當然並不是每次讀數據前都要寫1.只要埠輸出配置沒有變化,只要在初始化的時候寫一次就夠了,因為輸出埠有輸出鎖存,可以保持Q2的狀態截止。
⑶ AVP32F335中的ADC寄存器怎麼配置
寄存器的配置的話,你可以去看一下他們官方出來的一個系列基本配置,然後可以去參照官方的配置,然後再給自己的寄存器進行搭配設置就可以了。
⑷ 說明AVR單片機I/O口3個寄存器的名稱和作用是什麼當I/O口用於輸入和輸出時,如何設置和應用這3個寄存器
拿A口作例子
DDRA是數據方向寄存器,用來選擇引腳的方向,某位為1配置為輸出,某位為0配置為輸入。
DDRA相應位輸出,PORTA用來設置埠電平。
DDRA相應位輸入,PORTA配置上拉電阻,為1帶上拉電阻,為0不帶上拉電阻。
輸出:
DDRA=0xFF;//全作輸出,設置一次即可
PORTA=0xFF;//全為1,全輸出高電平
PORTA=0;//全為0,全輸出低電平
輸入:
DDRA=0;//全作輸入,設置一次即可
PORTA=0xFF;//全帶上拉電阻,設置一次即可
PORTA=0;//全不帶上拉電阻,設置一次即可
a=PINA;//讀A口。不論何時都可以讀PINA來獲得埠電平,不過因為鎖存會有延時
注意,因為一個埠有8個引腳(少數不夠8個腳),所以可以精確控制某一位或者某幾位而不影響別的位。
DDRA|=1;//A口第0位變成輸出,不影響別的位,也不管第0位原來是輸出還是輸入
DDRA&=~1;//A口第0位變成輸入,不影響別的位,也不管0位原來是輸出還是輸入
PORTA類似
a=PINA;//一次讀8個引腳狀態,在程序中再處理a的相應位好了。