imagine,详解单片机程序的运转进程,苹果肌

频道:新闻调查 日期: 浏览:288

从单片机上知道,在上电的那一刻,MCUimagine,详解单片机程序的作业进程,苹果肌的程序指针PC会被初始化为上电复位时的地址,从哪个地址处读取行将履行的指令,由此程序在MCU上开端履行(当然在调用程序的 main之前,还有一系列其他的的初始化要做,如仓库的初始化,不过这些咱们很少回去修正)。PC在上电时,和MCU差不多,不过读取的是BIOS,有它完结了许多初始化操作,最述组词后,调用体系的初始化函数,将控制权交给了操作体系,所以咱们看到了Windows,Linux体系发动了。

假如将操作体系看作是在处理器上跑的一个官场桃花运很大的裸机程序(便是直接在硬件上跑的程序,由于操作体系便是直接跑在CPU上的,这样看待是能够的,不过这个裸机程序功用许多,很强壮),那么操作体系的发动很像MCU程序的发动。前者有一个很大的初始化程序完结很杂乱的初始化,后者有一段不长的汇编代码完结一些简略的初始化。这一militantly点看,它们在流程上是很类似的。


详解单片机程序的作业进程

假如是体系上的程序发动呢?它们是由体系来决议的。Linux上在shell下输入。/p后,首要查看是否是一个内建的shell指令;假如不是,则shell眉山天气预报假定他是一个可履行文件(Linux上一般无极金仙异界游是elf格局),然后调用一些相关的函数,将在硬盘上的p文件的内容拷贝到内存(DDR RAM)中,并树立一个它的作业环境(当然这儿边还有内存映射,虚拟内存,衔接与加载,等一些其他东西),预备履行。

由以上可知,单片机上的程序和平常在体系上作业的程序,在发动时差异天鹅公主的隐秘城堡是很大的(假如将程序调用main曾经的动作,都笼统为初始化的话,程序的发动能够简化为:树立作业环境+调用文房四宝是指什么main函数,这样程序的履行差异是不大的)。由于单片机上跑的程序(裸机程序),是和操作体系相同跑在硬件上的,它们归于一个层次的。曩昔之所以没有区分出单片机上的程序和PC机上的程序的一些差异,便是没有弄了解这一点。

由此,曾经的一些疑问也就解开了。为什么在单片机上的程序不怎么运用malloc,而PC上经imagine,详解单片机程序的作业进程,苹果肌常运用?由于单片机上没有现已写好的内存办理算法的代码,而在PC上操作体系里作业的程序,libc现已把这些都做了,只需要调用就能够了。假如在单片机上想用动态内存,也能够,可是这些代码要自己去完成,并界说一个相应的malloc,有时分一些公司会给供给一些库函数或许会完成malloc金丝雀,可是由于单片机上RAM内存非常有限公主恋人ova,假如不知道它的作业方法,估计会很风险。相同,由于在PC的体系上作业的程序与逻机程序的不同,裸机程序不会有动态链接,有的仅仅静态链接。

关于imagine,详解单片机程序的作业进程,苹果肌程序在履行时,从哪里读取指令,哪里读取数据,也曾由于没有弄清楚体系上的程序和裸机程序之间的差异,而疑问了好久。虽然在《微型计算机原理》课上知道程序作业时,从内存中读取指令和数据进行履行和回写。可是单片机上只需几K的RAM,而flash一般有几十K乃至1M,这个时分指令和数据都在内存中吗(这儿指的内存仅指RAM,由于PC上夏玲影音咱们常说的内存便是DDR RAM memory,先入为主以至于以为单片机上也是这样,还没有了解其实RAM和Flash都是内存)?这不或许,由于课上教师只说内存,可是PC上内存一般便是DDR RAM,不会是硬盘,硬盘是保存数据的当地;由此类比时,自己把自己弄晕菜了,单片机的RAM对应于DDR RAM,那Flashimagine,详解单片机程序的作业进程,苹果肌是不是就对应于硬盘了呢?在CSAPP上了解了,PC上之所以都在DDR RAM上,是速度的要素。

硬盘的速度太慢,即使是行将到来的SSD比起DDRRAM,还curious是差着几个数量级,所以拷贝到DDRRAM中。这时,一个程序的代码和数据是接连寄存的,其间代码段是只读区域,数据段是可读写区域(这是由操作体系的内存办理机制决议的)。作业时,再将它们拷贝到速度更快的SRAM中,以得到更快的履行速度。而关于,单片机而言作业频率也就几advantageM,几十M,从Flash中与从RAM中读的差异可imagine,详解单片机程序的作业进程,苹果肌能并不显着,不会成为程序履行的瓶颈(而关于PC而言,Flash的速度太慢,DDRRAM的速度也是很慢,即使是SRAM也是慢了不少,所以再进步作业频率也进步不了程序的履行速度,所以现在CPU作业频率最快是在2003左右。一个瓶颈呈现了。

为了进步CPU的运用率,换个视点想一下,已然不imagine,详解单片机程序的作业进程,苹果肌能削减一段程序的履行时刻,就在相同的时刻履行更多的程序,一个核履行一段程序,两个核就能够履行两段程序,所以多核CPU成为了现在的干流)。所以裸机程序指令就在Flash(Flash memory)中寄存,而数据就放在了RAM中(flash的写入次数有约束,一起它的速度和RAM仍是差许多)。更广泛说,在单片机上RAM寄存data段,bss段,仓库段;ROM(EPROM,E解药EPROM,Flash等非易失性存储设备)寄存代码,只读数据段。实质上说,这和PC上程序都在RAM北上广不相信眼泪中寄存是相同的,PC 上是操作体系规则了可读与可写,而单片机上是依托不同的存储设备区分了可读与可写(当然现在的Flash是玛咖的成效可读写的,假如Flash没有写入次数约束,速度又能够和RAM相差不多,单片机上是不是只需Flash就能够了呢(直接相当于PC上的DDRRAM)?这样本钱也会比一个RAM,一个Flash低,更节约本钱,关于生产商更合算)。

关于单片废品机械师机的程序履行时指令和数据的寄存与读取,了解如下:

对单片机编程后,程序的萧博瀚代码段,data段,bss段,rodata段等都寄存在Flash中。当单片机上电后,初始化汇编代码将data段,bss段,复制到RAM中,并树立好仓库,开端调用程序的main函数。今后,便有了程序存储器,和数据存储器之分,作业时从Flash(即指令存储器,代码存储器)中读取指令 ,从RAM中读取与写入数据。RAM存在的含义就在于速度更快。

无论是单片机也好,PC也罢,存在的存储器金字塔都是莫妮卡贝鲁奇共同的,速度的要素灼爱,本钱的约束导致了一级级更快的存储imagine,详解单片机程序的作业进程,苹果肌器的更快速度与更高的本钱。应该说,关于它们的了解,便是存储器金字塔的了解。

热门
最新
推荐
标签