資料介紹
我們在之前的四期中對利用單片機的功能進行程序設計進行了說明。單片機內置了非常便于使用的外設功能,大家一定也能感受到單片機可應對各種要求的能力。但是,如果要有效地運行單片機,程序是不可或缺的,那么程序到底是如何運行的呢?從本期開始,我們將分兩期連續向大家介紹單片機與程序的關系。
關注單片機的存儲器
在此之前,GR-SAKURA電路板(搭載瑞薩電子單片機“RX63N”)的程序設計是使用Web編譯器來進行的。將通過編譯器搭建的程序(Object Code,結果代碼)如同寫入U盤一樣將之傳送到GR-SAKURA電路板后再執行。那么,問題來了。寫入(傳送到)單片機的程序應該保存在哪兒呢?另外,程序又是如何被執行的呢?在解答這些問題的同時,讓我們一起來了解一下單片機與程序的關系吧。
首先來了解存儲器﹑主存儲器和外置存儲器的兩種作用
記憶(保存)程序和數據的地方即存儲器。存儲器有以下兩種類型。
主存儲器
CPU能夠直接進行存取的存儲器,用于保存正在執行中的程序和數據
外置存儲器(輔助存儲器、二級緩存器)
不能從CPU直接進行存取,需通過USB或串行、并行的各種I/O來進行存取,用于保存不在執行當中(處理中)的應用和數據
外置存儲器中的程序需傳送到主存儲器后才能執行。
關于單片機的存儲器,常會看到ROM(Read Only Memory:只讀存儲器)和RAM(Random Access Memory:可讀寫存儲器)等詞匯,其實ROM和RAM僅是表示存儲器性質,而與存儲器的作用無關。
地址空間(內存空間)
CPU能夠直接進行讀寫的所有空間被稱為“地址空間(或內存空間)”。這個地址空間的每個字節都標注有號碼。這個號碼稱為“地址(address)”,一般以十六進制來表示。上面所介紹過的主存儲器都包含在地址空間內。
根據不同用途,單片機的CPU已開發出了4位、8位、16位和32位。在GR-SAKURA中使用的RX63N單片機搭載了32位的CPU,因此也被稱為“32位單片機”。那么,單片機所擁有的地址空間容量到底有多少呢?以RX63N為例,由于是32位的CPU,因此最大能夠指定約40億(2的32次方)個地址。確切地說是4,294,967,296(4x1024x1024x1024)個地址。由于一個地址可以記憶一個字節,這時也可以表示為具有“4GB(千兆字節)的地址空間”(請參考專欄“計算機的單位”)。地址空間的容量越大越能搭載大容量的存儲器, 也可容納更大的程序。因此能夠實現更高功能的應用。
32位字節的CPU所擁有的4G字節的地址空間示例如圖1所示。左邊所示的是以十六進制標示的地址(參考專欄“表示地址的十六進制指的是什么?”)。由于一列保存有4個字節(=32位),所以左邊所標記的地址就是每4個地址的值。
圖1:地址空間及標示例
計算機的單位:位、字節、兆、千兆和兆兆(太)
數據的基本單位是位(b=bit),每個位的值為"0"或"1"。8位為1個字節(B=Byte)。例如,3個字節(3×8位)等同于24位。
電腦存儲設備的容量所使用的單位,大家耳熟能詳的有KB(千字節)、MB(兆字節)、GB(千兆字節)和TB(太字節)等。一般情況下會說1GB=1000MB或者這樣寫出來,但在計算機的世界里,此單位并非為1000倍,而是1024倍(2的10次方),因此正確的表示如下:
1KB(千字節)=2的10次方 = 1,024 字節
1MB(兆字節)=1,024KB = 2的20次方 1,048,576 字節
1GB(千兆字節)=1,024MB = 2的30次方 = 1,073,741,824 字節
1TB(太字節)=1,024GB = 2的40次方 = 1,099,511,627,776字節
表示地址的十六進制指的是什么?
地址空間內的地址以16進制來表示。例如,擁有16位(2的16次方)大小的地址空間中,如果以10進制來表示,就是“從地址0到地址65535”,如果以16進制來表示,則是從“地址0h到地址FFFFh”。在10進制中,每一位所取的值都在0到9之間,而在16進制中,則是0到F(相當于10進制的15)。以16進制表示的數,最后都有一個“h”,標明是以16進制來表示的。
程序保存在哪兒呢?(向量表)
那么,程序被保存在地址空間的什么地方,又是怎么樣開始工作的呢?單片機復位后便開始執行最優先程序。復位是在接通電源或接收到復位信號時發生。實際上,這種“開始執行最優先程序”處理中,有如下所示的兩種方法。
即開始執行程序時,有將執行程序的起始地址設為固定的CPU及將之設為可變地址的CPU。
在將起始地址設為固定的CPU中,大多是從地址0(地址空間中最小的地址)開始執行。這就是程序開始的地點。而且,有時要事先在地址0中實現寫入“下一個要執行的是地址○○”的跳轉(Jump)指令,并將程序預先放置在“地址○○”中。如果改寫“地址○○”,將可獲得與將起始地址設為可變地址同樣的效果。
將起始地址設為可變地址的CPU將起始地址寫入被稱為“向量表”的部分中(圖2)。向量表是只存放地址空間中各種起始地址的特定區域的名稱。一般來說是它放置在地址空間中最大地址的部分。
圖2:RX63N系列的向量表
以RX63N為例,由于地址是以32位來顯示的,為了保存它就需要4個字節。這就意味著圖3中的“復位”部分表示從地址FFFFFFFCh到地址FFFFFFFFh的4個字節中保存了程序的起始地址。CPU復位后將讀取保存于此的地址,并從作了標記的地址開始執行。被寫入向量表的不僅是復位后的起始地址,向量表中還保存發生中斷時程序的起始地址和異常處理(Exception Handling)的起始地址。也正因為保存了發生中斷及異常處理等因多種事由的起始地址,所以才被稱為“表(Table)”。
我們來設想一下使用了向量表的程序處理的情況。圖3表示出了發生非屏蔽中斷(NMI) (*1) 時的處理流程例。
1、產生NMI,
2、讀取寫在向量表的NMI的起始地址(此例中為10000000h),
3、執行所讀取地址(10000000h)中的NMI程序。
圖3:使用向量表進行處理的流程
(*1)非屏蔽中斷(NMI):所謂非屏蔽指的是無法禁止的意思。如有中斷請求,CPU將無條件地執行中斷處理。可用于通過看門狗定時器進行的中斷處理等。關于看門狗定時器,在本連載的第2期--“定時器”中已為大家作了介紹。
如上所述,在將程序的起始地址設為可變的CPU中,由于能夠通過寫入向量表來指定中斷處理的起始地址,因此具有在地址空間中自由配置中斷處理程序的特征。
本期我們介紹了CPU的地址空間與外設功能的關系、以及程序是從哪里開始執行的等內容。如果單片機為32位,就有非常巨大的地址空間可以使用。內存是非常寶貴的資源,所以將保存在內存中的程序設計得小巧非常重要,但32位單片機的地址空間已比16位的大了很多。為了縮小程序,沒有必要進行復雜的編程,我們的程序都是在更易于讀取的目標下來編寫的。
下期我們將通過說明執行程序時的處理和內存的關系來進一步理解單片機的有效運行。?
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 深度:單片機到底是如何軟硬件結合的?
- 深度:單片機到底是如何軟硬件結合的?
- 從單片機上電程序運行開始...資料下載
- 小白學單片機(15) 單片機程序下載失敗總結資料下載
- 單片機音樂程序的設計原理解析資料下載
- 51單片機的紅外遙控的資料和程序免費下載
- 到底是學單片機有前途還是嵌入式系統有前途
- 單片機P0口的AD0-7到底是什么意思
- 使用單片機進行中斷的應用資料和程序免費下載
- STC單片機參考程序資料免費下載 52次下載
- 51單片機的PWM程序資料免費下載 74次下載
- 單片機按鍵發送串口的程序資料免費下載 10次下載
- 51單片機的鍵盤掃描程序資料免費下載 2次下載
- 單片機匯編蜂鳴器的程序資料免費下載 14次下載
- 單片機程序范例的詳細資料免費下載 24次下載
- 單片機里的程序是如何運行? 4548次閱讀
- 晶振在單片機中扮演著什么角色?晶振壞了單片機還能運行程序嗎? 6001次閱讀
- 單片機解密到底是什么 2369次閱讀
- 單片機的主程序是如何執行的 1w次閱讀
- 如何自制一個AVR單片機ISP下載線 4227次閱讀
- 單片機的中斷程序如何運行 1.1w次閱讀
- 單片機的主程序和中斷程序是怎么樣運行的 1.4w次閱讀
- 如何對STC單片機進行免掉電下載 2236次閱讀
- 51單片機好學還是PIC單片機好學? 1w次閱讀
- 怎么讀取單片機程序_單片機程序是如何執行的_如何讀懂單片機程序 7.6w次閱讀
- ch340g單片機下載程序電路原理 7.9w次閱讀
- ARDUINO IDE編寫和AVR單片機程序的下載 1w次閱讀
- 詳解單片機程序的運行過程 9709次閱讀
- 單片機與程序設計(上) 3889次閱讀
- STC單片機程序燒錄與ISP下載相關知識 1w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論