Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1749365
  • 博文数量: 143
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1462
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-23 11:14
文章分类

全部博文(143)

文章存档

2022年(3)

2021年(13)

2020年(21)

2019年(8)

2018年(28)

2017年(7)

2016年(63)

我的朋友

分类: 嵌入式

2020-09-12 11:46:46

程序运行在 Flash RAM ?
转自: cpu运行时程序是在flash中还是在RAM呢?【转】
  x86 PC的CPU在运行程序时,将程序从外存(硬盘)中,调入到RAM中,CPU 从RAM中读取程序和数据; 而一般的单片机的程序是固化在flash(片内nor flash/片外nor flash)中,CPU运行时直接从flash中读取程序,从RAM中读取数据。

这种差异的原因是,二者采用不通的体系架构:
  x86构架的cpu是基于冯.诺依曼体系的,即数据和程序存储在一起,而且pc机的RAM资源相当丰富,从几十M到几百M甚至是几个G,客观上能够承受大量的程序数据。 
  单片机的构架大多是哈弗体系的,即程序和数据分开存储,而且单片的片内RAM资源是相当有限的,内部的RAM过大会带来成本的大幅度提高。

冯.诺依曼体系与哈佛体系的区别
  二者的区别就是程序空间和数据空间是否是一体的。早期的微处理器大多采用冯诺依曼结构,典型代表是Intel公司的X86微处理器。取指令和取操作数都在同一总线上,通过分时复用的方式进行的。缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。 
  哈佛总线技术应用是以DSP和ARM为代表的。采用哈佛总线体系结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指令和取操作数,从而大大提高了运算能力。 
  例如STM320LF240x系列DSP是增强型的哈佛结构通过三组并行的总线访问多个存储空间。它们分别是:程序地址总线(PAB),数据地址读总线(DRAB)和数据地址写总线(DWRB)。

单片机的程序运行在 Flash RAM ?
转自: 单片机程序运行在哪里
  单片机程序的运行,一般常见的有两种: 运行在ROM里的和运行在RAM里的。
  一般比较小的系统,也就是说,单片机本身内部就有FLASH的。这种FLASH不同于通用的FLASH,他是支持随机地址访问的。这样的单片机,一般程序都存储在FLASH里,然后运行的时候,PC指针也可以到固定的FLASH地址里去取指令,所以呢,程序是运行在FLASH里的。(---冯诺依曼体系. 如:我们的indoor,就是解析db后把大量的的字符串放在internal flash中,然后再ram中通过指针来访问。)
  还有一类,是相对比较大一些的系统,这些系统的程序,相对来说都是比较大的,单片机也都是比较强大的。他们的FLASH一般都是外挂的大FLASH,这样的FLASH就有个特点,不支持随机地址访问,必须一页一页的访问,这样的话,程序就不能运行在FLASH里,因为下一条指令会招不到。 怎么办呢,那就有办法啊,RAM支持随机地址访问啊,我们把FLASH里面的内容搬移到RAM里,就可以了,这样访问起来就会更快了。(---哈佛体系. 如:北京天豹的omapl138的核心板上,片外外挂一个4Gb的Nand Flash和一个128MB的DDR2 SRAM,来作为外存和内存。)
  说白了,就是一些简单的单片机,他的FLASH支持随地地址访问,为了降低程序,程序就运行在了FLASH里面了。

ROM和RAM 中数据比较
转自: 堆在ROM还是RAM?

阅读(1067) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~