1樓:檸檬不酸
x86cpu和微控制器讀取程式的具體途徑。
pc機在執行程式的時候將程式從外存(硬碟)中,調入到ram中執行,cpu從ram中讀取程式和資料。
而微控制器的程式則是固化在flash中,cpu執行時直接從flash中讀取程式,從ram中讀取資料。
造成這種差別的具體原因分析。
x86構架的cpu是基於馮。諾依曼體系的,即資料和程式儲存在一起,而且pc機的ram資源相當豐富,從幾十m到幾百m甚至是幾個g,客觀上能夠承受大量的程式資料。
微控制器的構架大多是哈弗體系的,即程式和資料分開儲存,而且單片的片內ram資源是相當有限的,內部的ram過大會帶來成本的大幅度提高。
通過上面的分析可得知:微控制器的程式能儲存於flash中是基於兩點考慮,即體系結構和ram資源的多少。因此,在技術不但進步片內ram容量不斷增多的今天,ram資源已經不再是制約這種差別的主要因素,而對於體系機構我們只要更改cpu讀取程式的方式就可以。
將嵌入式系統的程式存於ram中的具體做法。
「對於很多的嵌入式系統,其**很多都儲存在nor flash中,執行也是直接在flash中執行。我最近了解到我新公司的軟體中的一段**當時為了提高執行速度被載入到ram中執行。當時他們是花了很多時間來解決這個問題的。
他們是這樣實現的:
1,將你需要在ram中執行的**寫在單獨的乙個c檔案中,然後在指令碼中設定其執行位址與存放位址分開。設定好必要的**起始和結束的標誌變數。
2,在**中將存放位址處的**拷貝到執行位址中。
馮。諾依曼體系與哈佛體系的區別。
二者的區別就是程式空間和資料空間是否是一體的。 早期的微處理器大多採用馮諾依曼結構,典型代表是intel公司的x86微處理器。取指令和取運算元都在同一匯流排上,通過分時復用的方式進行的。
缺點是在高速執行時,不能達到同時取指令和取運算元,從而形成了傳輸過程的瓶頸。
哈佛匯流排技術應用是以dsp和arm為代表的。採用哈佛匯流排體系結構的晶元內部程式空間和資料空間是分開的,這就允許同時取指令和取運算元,從而大大提高了運算能力。例如stm320lf240x系列dsp是增強型的哈佛結構通過三組並行的匯流排訪問多個儲存空間。
微控制器是執行在flash 還是在ram上
2樓:匿名使用者
微控制器的程式是燒錄在flash儲存器中的,執行程式時,是直接從flash中讀出指令送cpu執行的,並不是在ram上執行的,只是在執行的過程中,需要在ram中讀/寫資料。
cpuôëððê±³ìðòêçôúflashöð»¹êçôúramäø£¿
cpuôëððê±³ìðòêçôúflashöð»¹êçôúram
討論:程式是執行在flash中還是ram中
3樓:匿名使用者
pc(x86)採用的是馮諾依曼結構,執行的時候即資料和程式都放在同乙個儲存器(ram)裡,共用一條儲存匯流排。具體 :當pc沒電的時候,程式和資料儲存在硬碟裡,當pc上電的時候,在硬碟裡執行的一段小程式把全部程式從硬碟搬運到ram中,然後程式開始在ram中執行;
而嵌入式系統(arm,dsp)採用的哈佛結構,執行的時候程式儲存在flash中,資料儲存在ram中,所以cpu從flash中取指令,到ram中取資料,指令匯流排和資料匯流排也是分開的;2者之所以採用不同的結構,主要因為pc的ram空間足夠,而嵌入式的ram太小;
stm32程式是在flash執行還是ram執行
4樓:網友
都是從flash開始執行。可以參考
VBA程式執行時出現事實錯誤424要求物件是怎麼回事
名臣 ubound arr,2 d arr 0,y 這兩個好象有問題,沒見過這麼寫的 合併成一個巨集試試 sub 生成下拉 dim sr as string dim data as new 執行 dim sql as string dim arr,y dim d as new dictionary ...
vb程式執行時很卡出現無響應,怎麼辦
我以前也碰到過類似問題,我用乙個笨方法 在耗時較大的迴圈中加入for i 1 to 1000 適當調整to後的值,即是交出足夠的時間給系統做出反應。不過會影響到程式執行的速度。doevents next 這裡不需要sleep,在迴圈中加入doevents就好了。若沒有新增doevents,執行時就會...
VB小程式,執行時報「3704」錯誤,提示「物件關閉時,不允許操作」怎麼解決
樓上講的dll不能開啟,不對 為保密起見,資料庫檔案可用任意符合規範的字元作副檔名,當然包括dll後面幾句這樣改下就行了 mycon.open mystr ssql select from fundcode where pwd passwd.text myrt.open ssql,mycon,1,3...