在單片機中用來存儲程序數(shù)據(jù)及常量數(shù)據(jù)或變量數(shù)據(jù),凡是c文件及h文件中所有代碼、全局變量、局部變量、’const’限定符定義">

极品日韩av_永久免费在线观看_成人免费在线电影网_午夜一区不卡_国产人妖乱国产精品人妖_日本成人中文字幕在线视频_亚洲欧美日韩视频一区_成人av综合一区

大學校園網(wǎng)

大學生活網(wǎng) > 大學生學習 > 電氣工程

單片機的ROM和RAM定義及工作任務介紹

ROM:(ReadOnlyMemory)程序存儲器

在單片機中用來存儲程序數(shù)據(jù)及常量數(shù)據(jù)或變量數(shù)據(jù),凡是c文件及h文件中所有代碼、全局變量、局部變量、’const’限定符定義的常量數(shù)據(jù)、startup.asm文件中的代碼(類似ARM中的bootloader或者X86中的BIOS,一些低端的單片機是沒有這個的)通通都存儲在ROM中。

RAM:(RandomAccessMemory)隨機訪問存儲器

用來存儲程序中用到的變量。凡是整個程序中,所用到的需要被改寫的量,都存儲在RAM中,“被改變的量”包括全局變量、局部變量、堆棧段。

程序經(jīng)過編譯、匯編、鏈接后,生成hex文件。用專用的燒錄軟件,通過燒錄器將hex文件燒錄到ROM中(究竟是怎樣將hex文件傳輸?shù)組CU內(nèi)部的ROM中的呢?),因此,這個時候的ROM中,包含所有的程序內(nèi)容:無論是一行一行的程序代碼,函數(shù)中用到的局部變量,頭文件中所聲明的全局變量,const聲明的只讀常量,都被生成了二進制數(shù)據(jù),包含在hex文件中,全部燒錄到了ROM里面,此時的ROM,包含了程序的所有信息,正是由于這些信息,“指導”了CPU的所有動作。

可能有人會有疑問,既然所有的數(shù)據(jù)在ROM中,那RAM中的數(shù)據(jù)從哪里來?什么時候CPU將數(shù)據(jù)加載到RAM中?會不會是在燒錄的時候,已經(jīng)將需要放在RAM中數(shù)據(jù)燒錄到了RAM中?

要回答這個問題,首先必須明確一條:ROM是只讀存儲器,CPU只能從里面讀數(shù)據(jù),而不能往里面寫數(shù)據(jù),掉電后數(shù)據(jù)依然保存在存儲器中;RAM是隨機存儲器,CPU既可以從里面讀出數(shù)據(jù),又可以往里面寫入數(shù)據(jù),掉電后數(shù)據(jù)不保存,這是條永恒的真理,始終記掛在心。

清楚了上面的問題,那么就很容易想到,RAM中的數(shù)據(jù)不是在燒錄的時候?qū)懭氲模驗闊浲戤吅螅蔚綦娫矗斣俳oMCU上電后,CPU能正常執(zhí)行動作,RAM中照樣有數(shù)據(jù),這就說明:RAM中的數(shù)據(jù)不是在燒錄的時候?qū)懭氲模瑫r也說明,在CPU運行時,RAM中已經(jīng)寫入了數(shù)據(jù)。關(guān)鍵就在這里:這個數(shù)據(jù)不是人為寫入的,CPU寫入的,那CPU又是什么時候?qū)懭氲哪?聽我娓娓道來。

上回說到,ROM中包含所有的程序內(nèi)容,在MCU上電時,CPU開始從第1行代碼處執(zhí)行指令。這里所做的工作是為整個程序的順利運行做好準備,或者說是對RAM的初始化(注:ROM是只讀不寫的),工作任務有幾項:

1、為全局變量分配地址空間---à如果全局變量已賦初值,則將初始值從ROM中拷貝到RAM中,如果沒有賦初值,則這個全局變量所對應的地址下的初值為0或者是不確定的。當然,如果已經(jīng)指定了變量的地址空間,則直接定位到對應的地址就行,那么這里分配地址及定位地址的任務由“連接器”完成。

2、設置堆棧段的長度及地址---à用C語言開發(fā)的單片機程序里面,普遍都沒有涉及到堆棧段長度的設置,但這不意味著不用設置。堆棧段主要是用來在中斷處理時起“保存現(xiàn)場”及“現(xiàn)場還原”的作用,其重要性不言而喻。而這么重要的內(nèi)容,也包含在了編譯器預設的內(nèi)容里面,確實省事,可并不一定省心。平時怎么就沒發(fā)現(xiàn)呢?奇怪。

3、分配數(shù)據(jù)段data,常量段const,代碼段code的起始地址。代碼段與常量段的地址可以不管,它們都是固定在ROM里面的,無論它們怎么排列,都不會對程序產(chǎn)生影響。但是數(shù)據(jù)段的地址就必須得關(guān)心。數(shù)據(jù)段的數(shù)據(jù)時要從ROM拷貝到RAM中去的,而在RAM中,既有數(shù)據(jù)段data,也有堆棧段stack,還有通用的工作寄存器組。通常,工作寄存器組的地址是固定的,這就要求在絕對定址數(shù)據(jù)段時,不能使數(shù)據(jù)段覆蓋所有的工作寄存器組的地址。必須引起嚴重關(guān)注。

這里所說的“第一行代碼處”,并不一定是你自己寫的程序代碼,絕大部分都是編譯器代勞的,或者是編譯器自帶的demo程序文件。因為,你自己寫的程序(C語言程序)里面,并不包含這些內(nèi)容。高級一點的單片機,這些內(nèi)容,都是在startup的文件里面。仔細閱讀,有好處的。

通常的做法是:普通的flashMCU是在上電時或復位時,PC指針里面的存放的是“0000”,表示CPU從ROM的0000地址開始執(zhí)行指令,在該地址處放一條跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到_main函數(shù)中,然后根據(jù)不同的指令,一條一條的執(zhí)行,當中斷發(fā)生時(中斷數(shù)量也很有限,2~5個中斷),按照系統(tǒng)分配的中斷向量表地址,在中斷向量里面,放置一條跳轉(zhuǎn)到中斷服務程序的指令,如此如此,整個程序就跑起來了。決定CPU這樣做,是這種ROM結(jié)構(gòu)所造成的。

其實,這里面,C語言編譯器作了很多的工作,只是,你不知道而已。如果你仔細閱讀編譯器自帶的help文件就會知道很多的事情,這是對編譯器了解最好的途徑。

I/O口寄存器:

也是可以被改變的量,它被安排在一個特別的RAM地址,為系統(tǒng)所訪問,而不能將其他變量定義在這些位置。

中斷向量表:

中斷向量表是被固定在MCU內(nèi)部的ROM地址中,不同的地址對應不同的中斷。每次中斷產(chǎn)生時,直接調(diào)用對應的中斷服務子程序,將程序的入口地址放在中斷向量表中。

ROM的大小問題:

對于flash類型的MCU,ROM空間的大小通常都是整字節(jié)的,即為ak*8bits。這很好理解,一眼就知道,ROM的空間為aK。但是,對于某些OTP類型的單片機,比如holtek或者sonix公司的單片機,經(jīng)常看到數(shù)據(jù)手冊上寫的是“OTPprogarmingROM2k*15bit。。。。。”,可能會產(chǎn)生疑惑,這個“15bit”認為是1個字節(jié)有余,2個字節(jié)又不足,那這個ROM空間究竟是2k,多于2k,還是4k但是少了一點點呢?

這里要明確兩個概念:一個是指令的位寬,另一個是指令的長度。指令的位寬是指一條指令所占的數(shù)據(jù)位的寬度;有些是8位位寬,有些是15位位寬。指令長度是指每條指令所占的存儲空間,有1個字節(jié),有2個字節(jié)的,也有3個字節(jié)甚至4個字節(jié)的指令。這個可以打個形象的比方:我們做廣播體操時,有很多動作要做,但是每個復雜的動作都可以分解為幾個簡單的動作。例如,當做伸展運動時,我們只聽到廣播里面喊“2、2、3、4、5、6、7、8”,而這里每一個數(shù)字都代表一個指令,聽到“3”這個指令后,我們的頭、手、腰、腿、腳分別作出不同的動作:兩眼目視前方,左手叉腰,右手往上抬起,五指伸直自然并攏打開,右腿伸直,左腿成弓步······等等一系列的分解動作,而要做完這些動作的指令只有一個“3”,要執(zhí)行的動作卻又很多,于是將多個分解動作合并成一個指令,而每個分解動作的“位寬”為15bits。實事上也確實如此,當在反匯編或者匯編時,可以看到,復合指令的確是有簡單的指令組合起來的。

到此,回答前面那個問題,這個OTP的ROM空間應該是2K,指令位寬為15位。一般的,當指令位寬不是8的倍數(shù)時,則說明該MCU的大部分指令長度是一個字節(jié)(注:該字節(jié)寬度為15位,不是8位),極少數(shù)為2個或多個字節(jié),雖然其總的空間少,但是其能容下的空間數(shù)據(jù)并不少。
亚洲免费电影一区| 欧洲精品一区二区| 香蕉久久夜色精品国产使用方法| 日韩三级精品| 欧美第一精品| 亚洲一区网站| bt欧美亚洲午夜电影天堂| 国产精品天干天干在线综合| 一区二区三区日韩精品视频| 在线电影院国产精品| 69av二区| 伊人精品影院| 欧美久久一区二区三区| 五月久久久综合一区二区小说| 久久精品一区二区三区中文字幕 | 又黄又www| 欧美激情视频在线播放| 天堂久久午夜av| 日韩欧美一区二区三区在线视频 | 人在线成免费视频| 精品国产一区二区三区不卡蜜臂 | 韩日精品视频一区| 中文字幕一区二区三区色视频| 欧美日韩国产a| 亚洲尤物在线视频| 素人一区二区三区| 欧美日韩1080p| 久久综合给合久久狠狠狠97色69| 午夜国产精品影院在线观看| 日韩高清a**址| 性直播体位视频在线观看| 精品国产一区二区三区不卡蜜臂 | 成人午夜视频网站| 日本大香伊一区二区三区| 探花国产精品| 电影亚洲精品噜噜在线观看| 91日韩欧美| 久久青草国产手机看片福利盒子 | 欧美成人精品三级网站| 欧美激情第8页| 国产欧美日韩中文久久| 日韩精品中文字幕一区二区三区 | 精品久久久久久久久久久久久久久久久| 日韩三级电影网| 操欧美女人视频| 另类小说综合欧美亚洲| 欧美日韩中文字幕综合视频| 日韩在线免费播放| 色狼人综合干| 91蜜桃传媒精品久久久一区二区| 欧美久久久久久久久久| 中文字幕中文字幕在线中高清免费版 | 在线毛片网站| 欧美日韩伦理在线免费| 国产三级欧美三级日产三级99| 亚洲国产欧美久久| 一区二区三区四区日本视频| 亚洲专区在线| 疯狂做受xxxx高潮欧美日本| 91青青在线视频| 四季av一区二区凹凸精品| 欧美国产1区2区| 国内福利写真片视频在线| 中文字幕av一区二区三区四区| 国产 日韩 欧美大片| 亚洲国产欧美久久| 精品国产一区二| 成人sese在线| 69国产精品| 日韩精品亚洲aⅴ在线影院| 26uuu国产日韩综合| 亚洲欧美日韩国产中文专区| 久久精品一级| 久久久久久久一区| 在线成人动漫| 日韩免费视频| 天涯成人国产亚洲精品一区av| 在线免费黄色| 国产欧美午夜| 色综合久久综合网97色综合| 日本无删减在线| 日韩高清不卡一区二区三区| 欧美电影精品一区二区| 成人51免费| 日本一区二区三区四区| 极品美乳网红视频免费在线观看| 91精品国产麻豆国产在线观看| 欧美日韩午夜剧场| 成人美女黄网站| 成人的网站免费观看| 尤物网站在线| 一区二区自拍| 日韩一区二区电影在线| 蜜桃精品视频| 亚洲男同性视频| 欧美性爽视频| 国产精品亚洲人在线观看| 亚洲品质视频自拍网| 亚洲v天堂v手机在线| 一区二区三区精密机械公司| 黄色aa久久| 99精品热视频| 日本高清在线观看wwwww色| 日韩激情中文字幕| xxxx影院| 亚洲国产专区校园欧美| 精品成人一区二区三区| 自拍欧美一区| 欧美性xxxxx极品少妇| 久久精品97| 一区二区三区四区国产精品| xxx欧美xxx| 中文字幕成人av| 999av小视频在线| 久久久一区二区三区| 精品51国产黑色丝袜高跟鞋| 国产麻豆精品theporn| 头脑特工队2在线播放| 欧美综合国产| 在线观看中文字幕| 另类亚洲自拍| 伊人网在线视频| 美国十次了思思久久精品导航 | 欧美私人啪啪vps| 日韩精品黄色网| 亚洲一本视频| 国产在线视频你懂| 亚洲另类自拍| 在线观看免费观看在线91| 日韩福利视频导航| 毛片网站在线观看| 成人涩涩免费视频| 欧美xxxx做受欧美88bbw| 久久精品这里都是精品| 黑人精品一区| 精品久久久久久亚洲国产300| 亚洲一二av| 欧美电影在线免费观看| 99热国内精品| http://嫩草影院| 日韩av网站免费在线| 成人免费高清在线播放| 99久久综合精品| 625成人欧美午夜电影| 亚洲一区二区四区蜜桃| 国产精品一区二区中文字幕| 正在播放一区二区| 好看不卡的中文字幕| 在线播放av片| 2023国产一二三区日本精品2022| ****av在线网毛片| 五月激情丁香一区二区三区| 你懂的一区二区三区| 亚洲精品色婷婷福利天堂| 日韩不卡一区二区三区| 伊人222成人综合网| 一区二区三区在线视频免费| 色综合www| 免费免费啪视频在线观看| 韩国精品久久久| 国产白浆在线免费观看| 欧美性猛交xxxxx免费看| 欧美韩国日本在线观看| 中文字幕网站视频在线| 91在线国内视频| 日本精品国产| 亚洲乱亚洲乱妇无码| 国产成人午夜精品5599| 欧美日韩视频免费观看| 欧美一区二区三区爱爱| 日韩精品一二三| sm性调教片在线观看| 欧美午夜精品免费| 午夜亚洲视频| 毛片大全在线观看| 在线精品视频免费观看| 国产欧美精品| av白虎一区| 69精品人人人人| 狠狠色狠狠色合久久伊人| 99久久er| 精品视频www| 国产夜色精品一区二区av| 欧美亚洲大陆| 在线国产一级| 亚洲国产aⅴ成人精品无吗| 欧美日本精品| 悠悠资源网亚洲青| 亚洲精品一区二区三区在线观看| 国产一区啦啦啦在线观看| 伊人久久一区| 3dmax动漫人物在线看| 国产精品久久久99| 一区二区电影| 91禁在线看| 精品福利视频一区二区三区| 国产一区不卡在线| 网曝91综合精品门事件在线| 日本一卡二卡四卡精品| 午夜国产不卡在线观看视频|