打印
[PIC®/AVR®/dsPIC®产品]

关于单片机内存大小影响的问题?

[复制链接]
2176|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大佬,在下酸菜鱼想请教一下:单片机的内存大或小会对程序运行产生什么影响吗?
我了解的话就是空间太小,太庞杂的功能不能实现,除此之外还有其他的一些影响吗?

使用特权

评论回复
来自 2楼
梦幻泡影| | 2020-8-15 11:38 | 只看该作者
就跟楼上说的一样,你要准确描述你指的内存到底是RAM还是ROM,通常单片机数据手册里说到的Flash空间大小就是指ROM的大小。那我就分两种情况来说吧,假如你问的是ROM大小对程序运行的影响,简单粗暴地说,只要你能烧录进去,就没问题,前提是你设置的芯片型号没错,这个不必过于担心。倒是RAM对程序运行的影响挺大的,打个比方,假如你MCU的RAM是4K Byte,首先,你在代码里面声明的数组是一定不能大于4K Byte的,当然了,大于的话是编译不通过的,这个比较好发现,其次是对于栈区(Stack)的分配,因为Stack也是占用RAM的,栈区的大小直接决定了你函数嵌套的层次,你如果觉得自己还是酸菜鱼的话,就最好去了解一下这方面的知识,这样离咸鱼就不远了,在这我就不做详细解说了,举个最明显的栗子,有时候你在单步调试时会发现,你全局变量或者是全局数组的值会被无故修改,但是找来找去也没有发现修改变量的语句,那么极有可能是访问越界了,跟程序跑飞大致一样,这时候,检查检查你的Stack Size吧,说不定惊喜就在等着你

使用特权

评论回复
板凳
电子小白一号| | 2020-8-14 10:16 | 只看该作者
没啥了,单片机的内存就是内部存储器,你如果觉得不够的话还可以加外部存储器,主要放得就是代码和数据,除非你用图像处理或者音频处理那种,内存可能会不够

使用特权

评论回复
地板
lcczg| | 2020-8-14 10:36 | 只看该作者
这个应该是和你电脑配个大硬盘的感觉一样。

使用特权

评论回复
5
CoolSilicon| | 2020-8-14 10:41 | 只看该作者
首先, 这里你的内存的意思 是指ROM 还是RAM???

使用特权

评论回复
6
a511484095|  楼主 | 2020-8-14 10:56 | 只看该作者
CoolSilicon 发表于 2020-8-14 10:41
首先, 这里你的内存的意思 是指ROM 还是RAM???

能否都概述一下?我对ROM和RAM的使用上没有碰到不够用的情况,但是我担心这些条件上的限制会对程序运行产生不良影响。

使用特权

评论回复
7
CoolSilicon| | 2020-8-14 11:17 | 只看该作者
a511484095 发表于 2020-8-14 10:56
能否都概述一下?我对ROM和RAM的使用上没有碰到不够用的情况,但是我担心这些条件上的限制会对程序运行产 ...

你可以先百度一下把..
搞清楚概念...很容易的.

使用特权

评论回复
8
a511484095|  楼主 | 2020-8-14 13:53 | 只看该作者
CoolSilicon 发表于 2020-8-14 11:17
你可以先百度一下把..
搞清楚概念...很容易的.

我本来百度的是 “内存大小对单片机的影响”,但是好像没有人对这个感兴趣。
总觉得概念有一点模糊,可能是因为没有真正碰壁吧,谢谢前辈

使用特权

评论回复
9
雪山飞狐D| | 2020-8-14 14:19 | 只看该作者
最直接的就是栈空间大小,直接影响函数嵌套的层级

使用特权

评论回复
10
CoolSilicon| | 2020-8-14 14:48 | 只看该作者
a511484095 发表于 2020-8-14 13:53
我本来百度的是 “内存大小对单片机的影响”,但是好像没有人对这个感兴趣。
总觉得概念有一点模糊,可能 ...

是请你百度. ROM. RAM的概念.....
你的问题是“内存大小对单片机的影响”,  你搞清楚上面的概念了之后, 你的问题可能会更准确,或者你自己就明白了..

使用特权

评论回复
11
a511484095|  楼主 | 2020-8-14 15:52 | 只看该作者
CoolSilicon 发表于 2020-8-14 14:48
是请你百度. ROM. RAM的概念.....
你的问题是“内存大小对单片机的影响”,  你搞清楚上面的概念了之后,  ...

谢谢前辈!其实我准确来说想问的是“程序占用单片机RAM和ROM的空间比例较大会对程序整体运行有影响吗?”

使用特权

评论回复
12
a511484095|  楼主 | 2020-8-14 15:54 | 只看该作者
CoolSilicon 发表于 2020-8-14 14:48
是请你百度. ROM. RAM的概念.....
你的问题是“内存大小对单片机的影响”,  你搞清楚上面的概念了之后,  ...

感觉除了程序运行速度慢之外似乎没有其他影响。。

使用特权

评论回复
13
linnjing| | 2020-8-14 19:46 | 只看该作者
单片机和PC不太一样。
单片机的程序一般是存在ROM中,直接在ROM中运行。
PC是把程序从硬盘读到RAM中运行。
所以,如果现在写了一个100K的程序,ROM就要有100K,RAM则不需要100K。
RAM的要求主要看算法,各种缓冲区,堆栈。。。






使用特权

评论回复
14
phosphate| | 2020-8-15 09:58 | 只看该作者
ROM的话主要的影响就是代码量的问题,能放下就可以,RAM就会影响程序的算法问题,运算缓冲区 变量 堆栈 等都要占用RAM

使用特权

评论回复
15
6688hyc| | 2020-8-15 12:59 | 只看该作者
RAM不够肯定有影响,变量都不能定义那么多

使用特权

评论回复
16
xinliby| | 2020-8-15 22:22 | 只看该作者
有意思,学习了,

使用特权

评论回复
17
xyz549040622| | 2020-8-16 07:22 | 只看该作者
我的理解是,只要你放的下,就不会有太大的影响。
当然涉及到具体的取指速度,比如STC的片外和片内,ARM的RAM和SRAM的区别,但相对于你的问题,我认为这些都是次要的。

使用特权

评论回复
18
a511484095|  楼主 | 2020-8-17 08:55 | 只看该作者
梦幻泡影 发表于 2020-8-15 11:38
就跟楼上说的一样,你要准确描述你指的内存到底是RAM还是ROM,通常单片机数据手册里说到的Flash空间大小就 ...

谢谢前辈!受益颇丰!向咸鱼前进!

使用特权

评论回复
19
wsmysyn| | 2020-8-19 10:22 | 只看该作者
前边说的很详细了,
拿STM32举例,
Code + RO + RW的大小是放在FLASH上的,也就是ROM
RW + ZI 占用的是SRAM的大小

只要你编译出来的目标文件,占用ROM和RAM的空间,都在芯片提供的最大空间之内,都是没有什么问题,
同系列MCU,只是RAM,和ROM空间不一样的,空间占用大小一样的话,运行结果几乎也是没有什么差别的,
唯一的差别就是大空间当然可以做更多的事情,小空间对于复杂的应用就显得紧张了一些

跟木桶装水一样,3升的和5升,大家都能装3升的水,但是你要装4升,只能选5升的桶。

使用特权

评论回复
20
a511484095|  楼主 | 2020-8-22 17:34 | 只看该作者
wsmysyn 发表于 2020-8-19 10:22
前边说的很详细了,
拿STM32举例,
Code + RO + RW的大小是放在FLASH上的,也就是ROM

蟹蟹蟹蟹~~!!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

126

帖子

0

粉丝