在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>存儲器技術>單片機的程序在內存和FLASH中應該如何進行空間分配

單片機的程序在內存和FLASH中應該如何進行空間分配

2019-09-18 | pdf | 0.08 MB | 次下載 | 1積分

資料介紹

  一句話:基于速度問題,電腦使用硬盤存儲程序,運行時,在內存中分配空間給變量,加載程序到內存中,在內存中執行程序。單片機使用FLASH 存儲程序,運行時,不會將程序加載到內存中,在FLASH中執行程序,在內存RAM中給變量分配空間。

  關于程序的執行,以前想的不多,沒有意識到一個程序在運行時,從哪里讀指令,數據又寫在哪里。從單片機上知道,在上電的那一刻,MCU的程序指針PC會被初始化為上電復位時的地址,從哪個地址處讀取將要執行的指令,由此程序在MCU上開始執行(當然在調用程序的 main之前,還有一系列其他的的初始化要做,如堆棧的初始化,不過這些我們很少回去修改)。PC在上電時,和MCU差不多,不過讀取的是BIOS,有它完成了很多初始化操作,最后,調用系統的初始化函數,將控制權交給了操作系統,于是我們看到了Windows,Linux系統啟動了。如果將操作系統看作是在處理器上跑的一個很大的裸機程序(就是直接在硬件上跑的程序,因為操作系統就是直接跑在CPU上的,這樣看待是可以的,不過這個裸機程序功能很多,很強大),那么操作系統的啟動很像MCU程序的啟動。前者有一個很大的初始化程序完成很復雜的初始化,后者有一段不長的匯編代碼完成一些簡單的初始化。這一點看,它們在流程上是很相似的。如果是系統上的程序啟動呢?它們是由系統來決定的。Linux上在shell下輸入。/p后,首先檢查是否是一個內建的shell命令;如果不是,則shell假設他是一個可執行文件(Linux上一般是elf格式),然后調用一些相關的函數,將在硬盤上的p文件的內容拷貝到內存(DDR RAM)中,并建立一個它的運行環境(當然這里邊還有內存映射,虛擬內存,連接與加載,等一些其他東西),準備執行。由以上可知,單片機上的程序和平時在系統上運行的程序,在啟動時差異是很大的(如果將程序調用main以前的動作,都抽象為初始化的話,程序的啟動可以簡化為:建立運行環境+調用main函數,這樣程序的執行差異是不大的)。因為單片機上跑的程序(裸機程序),是和操作系統一樣跑在硬件上的,它們屬于一個層次的。過去之所以沒有區分出單片機上的程序和PC機上的程序的一些差異,就是沒有弄明白這一點。由此,以前的一些疑惑也就解開了。為什么在單片機上的程序不怎么使用malloc,而PC上經常使用?因為單片機上沒有已經寫好的內存管理算法的代碼,而在PC上操作系統里運行的程序,libc已經把這些都做了,只需要調用就可以了。如果在單片機上想用動態內存,也可以,但是這些代碼要自己去實現,并定義一個相應的malloc,有時候一些公司會給提供一些庫函數可能會實現malloc,但是因為單片機上RAM內存十分有限,如果不知道它的運行方式,估計會很危險。同樣,因為在PC的系統上運行的程序與邏機程序的不同,裸機程序不會有動態鏈接,有的只是靜態鏈接。關于程序在執行時,從哪里讀取指令,哪里讀取數據,也曾因為沒有弄清楚系統上的程序和裸機程序之間的區別,而疑惑了很久。雖然在《微型計算機原理》課上知道程序運行時,從內存中讀取指令和數據進行執行和回寫。但是單片機上只有幾K的RAM,而flash一般有幾十K甚至1M,這個時候指令和數據都在內存中嗎(這里指的內存僅指RAM,因為PC上我們常說的內存就是DDR RAM memory,先入為主以至于認為單片機上也是這樣,還沒有明白其實RAM和Flash都是內存)?這不可能,因為課上老師只說內存,但是PC上內存一般就是DDR RAM,不會是硬盤,硬盤是保存數據的地方;由此類比時,自己把自己弄暈菜了,單片機的RAM對應于DDR RAM,那Flash是不是就對應于硬盤了呢?在CSAPP上明白了,PC上之所以都在DDR RAM上,是速度的因素。硬盤的速度太慢,即使是即將到來的SSD比起DDRRAM,還是差著幾個數量級,所以拷貝到DDRRAM中。這時,一個程序的代碼和數據是連續存放的,其中代碼段是只讀區域,數據段是可讀寫區域(這是由操作系統的內存管理機制決定的)。運行時,再將它們拷貝到速度更快的SRAM中,以得到更快的執行速度。而對于,單片機而言工作頻率也就幾M,幾十M,從Flash中與從RAM中讀的差異可能并不明顯,不會成為程序執行的瓶頸(而對于PC而言,Flash的速度太慢,DDRRAM的速度也是很慢,即使是SRAM也是慢了不少,于是再提高工作頻率也提高不了程序的執行速度,所以現在CPU工作頻率最快是在2003左右。一個瓶頸出現了。為了提高CPU的使用率,換個角度想一下,既然不能減少一段程序的執行時間,就在同樣的時間執行更多的程序,一個核執行一段程序,兩個核就可以執行兩段程序,于是多核CPU成為了現在的主流)。所以裸機程序指令就在Flash(Flash memory)中存放,而數據就放在了RAM中(flash的寫入次數有限制,同時它的速度和RAM還是差很多)。更廣泛說,在單片機上RAM存放data 段,bss段,堆棧段;ROM(EPROM,EEPROM,Flash等非易失性存儲設備)存放代碼,只讀數據段。本質上說,這和PC上程序都在RAM中存放是一樣的,PC 上是操作系統規定了可讀與可寫,而單片機上是依靠不同的存儲設備區分了可讀與可寫(當然現在的Flash是可讀寫的,如果Flash沒有寫入次數限制,速度又可以和RAM相差不多,單片機上是不是只要Flash就可以了呢(直接相當于PC上的DDRRAM)?這樣成本也會比一個RAM,一個Flash低,更節省成本,對于生產商更劃算)。

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1491次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機和 SG3525的程控開關電源設計
  14. 0.23 MB  |  4次下載  |  免費
  15. 8基于AT89C2051/4051單片機編程器的實驗
  16. 0.11 MB  |  4次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537793次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費
主站蜘蛛池模板: 扒开末成年粉嫩的流白浆视频 | 免费在线观看黄 | www.最色| 亚洲一区 在线播放 | 成人综合婷婷国产精品久久免费 | 国产午夜精品久久久久免费视小说 | 亚洲禁片| 美国bj69 video18| 日本午夜片成年www 日本午夜三级 | 欧美大黄 | 看片久久 | 男男之h啪肉np文 | 色精品一区二区三区 | 国产在线一区视频 | 加勒比一本大道香蕉在线视频 | 天天综合天天综合色在线 | 婷婷综合五月中文字幕欧美 | 热门国产xvideos中文 | 天天做天天看夜夜爽毛片 | 日日噜噜噜夜夜爽爽狠狠 | 亚洲最大成人网色 | 国产成人福利夜色影视 | 色人在线 | 第四色激情网 | 中文字幕亚洲一区婷婷 | 特级黄视频 | 亚洲高清国产拍精品影院 | 午夜国产福利在线观看 | 婷婷97狠狠的狠狠的爱 | 波多野结衣在线视频免费观看 | 亚洲精品第三页 | 天天干夜操 | 1024你懂的国产欧美日韩在 | 日韩欧美国产电影 | 欧美精品色精品一区二区三区 | videossexotv极度另类高清 | 亚洲一区中文字幕在线 | 日本久久久 | 天堂资源在线最新版 | 最新人妖shemaletube人妖 最新日本免费一区二区三区中文 | 成人影院免费观看 |