找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2130|回復: 16
收起左側

PIC單片機存儲器問題

[復制鏈接]
ID:613324 發(fā)表于 2023-3-14 11:03 | 顯示全部樓層 |閱讀模式
PIC單片機的程序存儲器空間是8K words,數(shù)據(jù)存儲器空間是1K,這樣的話,豈不是ROM空間比RAM空間大??那么程序怎么跑??
回復

使用道具 舉報

ID:1063163 發(fā)表于 2023-3-14 15:18 | 顯示全部樓層
你要明白PIC單片機是按照哈佛架構做的,而C51是基于馮諾依曼架構的。
“哈佛體系結構是一種計算機體系結構,其顯著特征是:
- 指令存儲器和數(shù)據(jù)存儲器是不同的物理設備;
- 指令總線和數(shù)據(jù)總線在物理上也是分開的!
這允許同時發(fā)送和處理命令和數(shù)據(jù),從而大大提高整體性能。
因此,在 PIC 微控制器中,ROM 僅用于存儲命令(和不變的數(shù)據(jù)——消息、轉換表、字符生成器……),而 RAM 僅用于存儲數(shù)據(jù)(變量、字符串、緩沖區(qū)、結構……) .
這種 PIC 架構在具有電磁干擾和噪聲的環(huán)境中使用時可實現(xiàn)非常高的可靠性。
回復

使用道具 舉報

ID:353115 發(fā)表于 2023-3-14 17:16 | 顯示全部樓層
你可以將ROM理解成書架,RAM理解成書桌。這樣你的問題其實就是,書架那么多書,書桌這么小,怎么看書?
書其實可以一點一點看的。
回復

使用道具 舉報

ID:401564 發(fā)表于 2023-3-14 20:44 | 顯示全部樓層
"這樣的話,豈不是ROM空間比RAM空間大??那么程序怎么跑??"
你是基于什么知識問這個問題的呢?
你隨便百度一個單片機型號,RAM比ROM還大的,你能找?guī)讉來
回復

使用道具 舉報

ID:883242 發(fā)表于 2023-3-14 21:28 | 顯示全部樓層
Y_G_G 發(fā)表于 2023-3-14 20:44
"這樣的話,豈不是ROM空間比RAM空間大??那么程序怎么跑??"
你是基于什么知識問這個問題的呢?
你隨便 ...

這個真的有,當年非智能手機用的ARM7單片機,程序在NAND flash里面,開機后把flash內容全部加載到RAM里面運行。
回復

使用道具 舉報

ID:613324 發(fā)表于 2023-3-17 14:03 | 顯示全部樓層
是我之前理解有誤,我一直認為要將程序放在RAM里跑,其實程序可以在ROM里跑的。。
回復

使用道具 舉報

ID:1034262 發(fā)表于 2023-3-17 15:07 | 顯示全部樓層
ROM空間比RAM空間大。MCU不是都這樣的嗎?通用的MCU里,我沒見過RAM比ROM大的,電腦我也沒見過內存比硬盤大的。
回復

使用道具 舉報

ID:613324 發(fā)表于 2023-3-23 16:01 | 顯示全部樓層
coody_sz 發(fā)表于 2023-3-17 15:07
ROM空間比RAM空間大。MCU不是都這樣的嗎?通用的MCU里,我沒見過RAM比ROM大的,電腦我也沒見過內存比硬盤大 ...

你沒見過不代表不可以,我就內存32G,硬盤16G,不可以?
看清問題,我的問題是以為程序是一定要放在RAM里跑的,可實際不是,程序可以放在ROM里跑,也可以放在RAM里跑。可是一般單片機都是放在ROM里跑,數(shù)據(jù)放在RAM里。
回復

使用道具 舉報

ID:139866 發(fā)表于 2023-3-23 16:06 | 顯示全部樓層
semonwong 發(fā)表于 2023-3-23 16:01
你沒見過不代表不可以,我就內存32G,硬盤16G,不可以?
看清問題,我的問題是以為程序是一定要放在RAM ...

這在說芯片,你扯電腦干啥,就算裝電腦,誰會放著32G內存條,硬盤去裝個16G的,呂布騎狗?
回復

使用道具 舉報

ID:401564 發(fā)表于 2023-3-23 20:16 | 顯示全部樓層
semonwong 發(fā)表于 2023-3-23 16:01
你沒見過不代表不可以,我就內存32G,硬盤16G,不可以?
看清問題,我的問題是以為程序是一定要放在RAM ...

你是來向別人請教的,不是來教別人的
"看清問題,我的問題是以為程序是一定要放在RAM里跑的,可實際不是"
你說這話的理論依據(jù)是什么呢?程序就是放在RAM里面跑的,而且,也只能放在RAM里運行
ROM是用來放指令的,不是用來運行指令的,單片機就是通過復制ROM里面的指令,放在RAM中運行的,叫復制也行,叫調用也行,大概就是這么個意思了
上古時期的單片機沒用過,不好說
現(xiàn)在的單片機,指令都是存放在ROM中,記住,是存放!不是在里面運行
然后,單片機再把ROM中的指令調(叫復制也行)出來,放在RAM中運行的,調用的方式不用,也就有了哈佛結構和馮諾依曼結構之分..........
這種玩意類似于"單片機發(fā)展史"之類的,村口大媽聊天一樣的內容,你都不舍得看一下?還杠人家.....
回復

使用道具 舉報

ID:613324 發(fā)表于 2023-3-31 14:27 | 顯示全部樓層
天ノ憶 發(fā)表于 2023-3-23 16:06
這在說芯片,你扯電腦干啥,就算裝電腦,誰會放著32G內存條,硬盤去裝個16G的,呂布騎狗?

是人家扯電腦的?礀|西都不仔細,還在指教別人。您真的理解我的提問嗎?
回復

使用道具 舉報

ID:996773 發(fā)表于 2023-3-31 14:45 | 顯示全部樓層
樓主還是先學會寫代碼讓硬件跑起來再說吧,入門自然知道ram和rom干啥了,這個問題不管是小白階段

問還是高手問都有點多余。
回復

使用道具 舉報

ID:613324 發(fā)表于 2023-3-31 15:38 | 顯示全部樓層
Y_G_G 發(fā)表于 2023-3-23 20:16
你是來向別人請教的,不是來教別人的
"看清問題,我的問題是以為程序是一定要放在RAM里跑的,可實際不是" ...

我不是請教別人,是跟別人討論這個問題。我也沒有教別人,別人說的不對,當然可以提了。這樣才能互相進步。我們都不是圣人,每個人說的話,每個人理解的意思,當然有正確有錯誤,提出哪里不合適,有什么問題?

對于你說的話,我也給你提出一些意見:
pc機在運行程序的時候將程序從外存(硬盤)中,調入到RAM中運行,cpu從RAM中讀取程序和數(shù)據(jù);
而單片機的程序則是固化在ROM或flash中,MCU運行時直接從ROM或flash中讀取程序,從RAM中讀取數(shù)據(jù),正由于是哈弗結構,數(shù)據(jù)和指令分家,所以MCU可以直接在ROM中跑,這才回到我討論的問題,RAM小,怎么把大的ROM的程序放在RAM里跑,其實就是根本不需要放RAM里跑。
本來ROM就是只讀存儲器,當然可以存放,也當然可以運行,這跟上古不上古有啥關系?和RAM的區(qū)別是一個掉電丟失一個掉電不丟失而已。
你不要學個什么ARM啥的就以為程序一定要搬運到RAM中,不同的單片機運轉完全不一樣。好好看清我的討論話題,講的是PIC單片機,PIC什么架構,自己先了解一下!

希望大家不要講什么哪有這么用的?更希望多從原理入手!
回復

使用道具 舉報

ID:613324 發(fā)表于 2023-3-31 16:02 | 顯示全部樓層
hi等你 發(fā)表于 2023-3-31 14:45
樓主還是先學會寫代碼讓硬件跑起來再說吧,入門自然知道ram和rom干啥了,這個問題不管是小白階段

問還是 ...

就這個問題,已經(jīng)抓到好幾個沒有真正理解的漏網(wǎng)之魚了。行了,這個話題討論結束,我也得到我的答案了。
回復

使用道具 舉報

ID:401564 發(fā)表于 2023-4-3 23:26 | 顯示全部樓層
semonwong 發(fā)表于 2023-3-31 15:38
我不是請教別人,是跟別人討論這個問題。我也沒有教別人,別人說的不對,當然可以提了。這樣才能互相進步 ...

對的,對的,你說的是對的,我說的全是錯的,我什么都不懂
回復

使用道具 舉報

ID:613324 發(fā)表于 2023-4-4 09:16 | 顯示全部樓層
Y_G_G 發(fā)表于 2023-4-3 23:26
對的,對的,你說的是對的,我說的全是錯的,我什么都不懂

你要這個態(tài)度,沒法繼續(xù)了啊,話題結束,我已找到我的答案。
我只是希望大家都搞懂,而不是說哪有這么用的,眼界打開!
忠言逆耳
回復

使用道具 舉報

ID:401564 發(fā)表于 2023-4-4 23:43 | 顯示全部樓層
semonwong 發(fā)表于 2023-4-4 09:16
你要這個態(tài)度,沒法繼續(xù)了啊,話題結束,我已找到我的答案。
我只是希望大家都搞懂,而不是說哪有 ...

對的,對的,你對單片機的認知在我之上,我確實不如你呀
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表