zoukankan      html  css  js  c++  java
  • 单片机、ARM、PC程序执行介质区别

      最近看到的关于程序在不同架构下执行的区别,大致有以下几点,算是解决了我对于不同存储器区别的困惑。

      1. 类似51,AVR这类的单片机,程序只能在ROM或FLASH里运行。STC的芯片一般是标准51或增强51,用的是FLASH,程序只能在FLASH中运行。
      2. ARM的程序即可以在FLASH里运行也可以在RAM里运行,不过能运行程序的FLASH只能使NorFlash,因为NANDFLASH的接口决定了其无法挂载在地址空间内。
      3. 也就是说只要能挂载到ARM的程序地址空间的设备都可以直接放运行程序。否则其他存储设备只能存储程序或数据。如一般带LINUX或Wince的ARM板,一般会把主系统程序放在NorFlash或NANDFLASH中,上电后用Loader程序吧主系统程序加载到RAM或SDRAM的可执行地址去,然后跳到主程序去执行。
      4. 计算机一般情况下系统存在硬盘里,系统启动时BIOS程序(在ROM里)先运行,然后从硬盘的系统分区里找到加载程序,加载到内存中(SDRAM),然后再由这段加载程序从磁盘中把系统加载进来。系统其实还可以存在光盘(所以可以从光盘启动)或网络计算机中(网吧里一般是这样)。大致就这个过程吧。

      其实总的来说可以分为RAM和ROM两类,因为CPU和这两种内存访问速度的不同(一般内存RAM快,ROM慢),才会有这样的差异产生。而且单片机属于哈佛架构,数据和程序是分离的,而且受限于RAM的成本,ram容量一般很小,所以才会在flash或ROM中执行程序。PC对于程序执行的效率要求更高,本身基于冯诺依曼架构,数据与程序共同存储,一般程序都是存放在硬盘(ROM)中,执行时复制到内存运行,相对单片机来说程序执行效率更高。不过两者适用的领域同样不同,嵌入式小型设备才是单片机的天下,而高端的pc领域则由X86等主宰,所以两者各有优劣,在恰当场景下选择最适合的便是最好的。

  • 相关阅读:
    填空练习(指向指针的指针)
    练习指针函数:编写一个函数,输入n为偶数时,调用fa函数,当输入n为奇数时,调用fb函数(利用指针函数)。
    输入一个整数,并将其反转后输出。
    有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
    案例练习
    操作don树
    Node对象
    element对象二
    element对象
    在末尾添加节点
  • 原文地址:https://www.cnblogs.com/aghx/p/14510465.html
Copyright © 2011-2022 走看看