『壹』 在cpu運行程序時,必須把程序放在哪
x86cpu和單片機讀取程序的具體途徑pc機在運行程序的時候將程序從外存(硬碟)中,調入到RAM中運行,cpu從RAM中讀取程序和數據而單片機的程序則是固化在flash中,cpu運行時直接從flash中讀取程序,從RAM中讀取數據造成這種差別的具體原因分析x86構架的cpu是基於馮.諾依曼體系的,即數據和程序存儲在一起,而且pc機的RAM資源相當豐富,從幾十M到幾百M甚至是幾個G,客觀上能夠承受大量的程序數據。單片機的構架大多是哈弗體系的,即程序和數據分開存儲,纖桐前而且單片的片內RAM資源是相當有限的,內部的RAM過大會帶來成本的大幅度提高。通過上面的分析可得知:單片機的程序能存儲於flash中是基於兩點考慮,即體系結構和RAM資源的多少。因此,在技術不但進步片內RAM容量不斷增多的今天,RAM資源已經不再是制約這種差別的主要因素,而對於體系機構我們只要更改cpu讀取程序的方式就可以。將嵌入式系統的程序存於RAM中的具體做法「對於很多的嵌入式系統,其代碼很多都存儲在norflash中,運行也是直接在flash中運行.我最近了解到我新公司的軟體中的一段代碼當時為了提高運行速度被載入到ram中運行.當時他們是花了很多時間來解決這個問題的.我仔細研究了一下鏈接腳本,用的是gnu的linux的交叉工具鏈.地址分配是寫在一個ld腳本中的.他們是這樣實現的:1,將你需要在ram中運行的代碼寫在單獨的一個c文件毀清中,然後在腳本中設置其運行地址與存放地址分開.設置好必要的代碼起始和結束的標輪陸志變數.2,在代碼中將存放地址處的代碼拷貝到運行地址中.馮.諾依曼體系與哈佛體系的區別二者的區別就是程序空間和數據空間是否是一體的。早期的微處理器大多採用馮諾依曼結構,典型代表是Intel公司的X86微處理器。取指令和取操作數都在同一匯流排上,通過分時復用的方式進行的。缺點是在高速運行時,不能達到同時取指令和取操作數,從而形成了傳輸過程的瓶頸。哈佛匯流排技術應用是以DSP和ARM為代表的。採用哈佛匯流排體系結構的晶元內部程序空間和數據空間是分開的,這就允許同時取指令和取操作數,從而大大提高了運算能力。例如STM320LF240x系列DSP是增強型的哈佛結構通過三組並行的匯流排訪問多個存儲空間。