大比特商务网 |资讯中心 |技术论坛 |解决方案 登录 注册 |数字刊 |招聘/求职
您的位置: 银河国际网站器件银河国际官网网 >>行业要闻 >> 行业新闻 >> 为何单片机上的程序不怎么使用malloc,PC上经常使用?

为何单片机上的程序不怎么使用malloc,PC上经常使用?

2018-05-16 12:00:54 来源:21ic电子网

【大比特导读】从单片机上知道,在上电的那一刻,MCU的程序指针会被初始化为上电复位时的地址,从那个地址处读取将要执行的指令,由此程序在MCU上开始执行。

单片机上知道,在上电的那一刻,MCU的程序指针会被初始化为上电复位时的地址,从那个地址处读取将要执行的指令,由此程序在MCU上开始执行(当然在调用程序的main之前,还有一系列其他的初始化要做,如堆栈的初始化,不过这些我们很少会去修改)。PC在上电时,和MCU差不多,不过读取的是BIOS,有它完成了很多初始化操作,最后,调用系统的初始化函数,将控制权交给了操作系统,于是我们看到了Windows,Linux系统启动了。

如果将操作系统看作是在处理器上跑的一个很大的裸机程序(就是直接在硬件上跑的程序,因为操作系统就是直接跑在CPU上的,这样看待是可以的,不过这个裸机程序功能很多很强大),那么操作系统的启动很像MCU程序的启动。前者有一个很大的初始化程序完成很复杂的初始化,后者有一段不长的汇编代码完成一些简单的初始化。这一点看,它们在流程上是很相似的。

为何单片机上的程序不怎么使用malloc,PC上经常使用?

如果是系统上的程序启动呢?它们是由系统来决定的。Linux上在shell下输入./p后,首先检查是否是一个内建的shell命令;如果不是,则shell假设它是一个可执行文件(Linux上一般是elf格式),然后调用一些相关的函数,将在硬盘上的p文件的内容拷贝到内存(DDR RAM)中,并建立一个它的运行环境(当然这里边还有内存映射、虚拟内存、连接与加载等一些其它东西),准备执行。

由以上可知,单片机上的程序和平时在系统上运行的程序,在启动时差异是很大的(如果将程序调用main以前的动作,都抽象为初始化的话,程序的启动可以简化为:建立运行环境+调用main函数,这样程序的执行差异是不大的)。因为单片机上跑的程序(裸机程序)是和操作系统一样跑在硬件上的,它们属于一个层次的。过去之所以没有区分出单片机上的程序和PC机上的程序的一些差异,就是没有弄明白这一点。

由此,以前的一些疑惑也就解开了。为什么在单片机上的程序不怎么使用malloc,而PC上经常使用?因为单片机上没有已经写好的内存管理算法的代码,而在PC上操作系统里运行的程序,libc已经把这些都做了,只需要调用就可以了。如果在单片机上想用动态内存,也可以,但是这些代码要自己去实现,并定义一个相应的malloc,有时候一些公司会给提供一些库函数可能会实现malloc,但是因为单片机上RAM内存十分有限,如果不知道它的运行方式,估计会很危险。同样,因为在PC的系统上运行的程序与裸机程序不同,裸机程序不会有动态链接,有的只是静态链接。

关于程序在执行时,从哪里读取指令,哪里读取数据,也曾因为没有弄清楚系统上的程序和裸机程序之间的区别,而疑惑了很久。虽然在《微型计算机原理》课上知道程序运行时,从内存中读取指令和数据进行执行和回写。但是单片机上只有几K的RAM,而Flash一般有几十K甚至1M,这个时候指令和数据都在内存中吗?(这里指的内存仅指RAM,因为PC上我们常说的内存就是DDR RAM memory,先入为主以至于认为单片机上也是这样,还没有明白其实RAM和Flash都是内存)?这不可能,因为课上老师只说内存,但是PC上内存一般就是DDR RAM,不会是硬盘,硬盘是保存数据的地方;由此类比时,自己把自己弄晕了,单片机的RAM对应于DDR RAM,那Flash是不是就对应于硬盘了呢?在CSAPP上明白了,PC上之所以都在DDR RAM上,是速度的因素。硬盘的速度太慢,即使是即将到来的SSD比起DDRRAM,还是差着几个数量级,所以拷贝到DDRRAM中。这时,一个程序的代码和数据是连续存放的,其中代码段是只读区域,数据段是可读写区域(这是由操作系统的内存管理机制决定的)。运行时,再将它们拷贝到速度更快的SRAM中,以得到更快的执行速度。

分享到:
阅读延展
单片机 内存
  • 三星否认需求不足致内存降价:内存需求没有重大变化

    三星否认需求不足致内存降价:内存需求没有重大变化

    对于内存芯片需求不足可能导致内存降价的消息,三星主管存储芯片、代工等业务的CEO金奇男表示今年底内存需求没什么重大变化,2019年内存芯片需求还会继续强势,从侧面否认了内存芯片降价的可能。

  • 内存芯片市场需求放缓,银河国际网站行业恐大幅下滑

    内存芯片市场需求放缓,银河国际网站行业恐大幅下滑

    近日,里昂证券(CLSA)的论坛上一位分析师对CNBC表示,即使美国和中国没有发生贸易战,银河国际网站行业也将很快大幅下滑。他表示,内存芯片需求放缓,库存水平上升以及价格下跌等因素可能导致该行业出现周期性下滑。

  • 中国大陆晶圆代工崛起,2020年产能将占全球20%

    中国大陆晶圆代工崛起,2020年产能将占全球20%

    根据SEMI公布的最新报告指出,凭着一股迅速成长的力道,中国大陆市场晶圆设备投资至2020年将可望超越全球其他地区,预计达200亿美元以上,其动能将来自跨国公司以及中国大陆企业在内存与晶圆代工项目的投资。

  • 紫光国微:DRAM内存芯片已达世界主流设计水平,但产能无法保证

    紫光国微:DRAM内存芯片已达世界主流设计水平,但产能无法保证

    紫光旗下还有紫光国微银河国际网站,该公司日前表示在DRAM内存芯片上,该公司已具备世界主流设计水平,但是产能无法保证,产品销量不大。

  • 紫光国微:已具备世界主流DRAM设计水平 但产能无法保证

    紫光国微:已具备世界主流DRAM设计水平 但产能无法保证

    2017年中国进口了2600多亿美元的集成电路芯片,其中存储芯片就占到了886亿美元,是国内进口最多、同时也是对进口依赖最高的,因为国内目前并没有任何大规模NAND闪存及DRAM内存工厂,长江存储、合肥长鑫及福建晋华的晶圆厂还在建设中,2020年之前产能都不太可能影响市场格局。

  • 台积电现危机感?日媒:恐买下台湾这家内存厂

    台积电现危机感?日媒:恐买下台湾这家内存厂

    随着全球智能手机需求近饱和,台积电董事长刘德音接受日媒访问罕见松口表示,不排除收购内存厂的可能性。虽然目前尚无潜在的收购目标,但消息人士已点名台湾DRAM大厂南亚科技,可见在手机芯片营收逐渐放缓之际,台积电积极寻找多元化的合作机会。

微信

第一时间获取电子制造行业新鲜资讯和深度商业分析,请在微信公众账号中搜索“大比特商务网”或者“big-bit”,或用手机扫描左方二维码,即可获得大比特每日精华内容推送和最优搜索体验,并参与活动!

发表评论

  • 最新评论
Copyright Big-Bit © 1999-2016 All Right Reserved 大比特资讯公司 版权所有      未经本网站书面特别授权,请勿转载或建立影像,违者依法追究相关法律责任