资料介绍
从单片机上知道,在上电的那一刻,MCU的程序指针会被初始化为上电复位时的地址,从那个地址处读取将要执行的指令,由此程序在 MCU上开始执行(当然在调用程序的 main之前,还有一系列其他的初始化要做,如堆栈的初始化,不过这些我们很少会去修改)。PC在上电时,和MCU差不多,不过读取的是BIOS,有它完成了很多初始化操作,最后,调用系统的初始化函数,将控制权交给了操作系统,于是我们看到了Windows,Linux系统启动了。
如果将操作系统看作是在处理器上跑的一个很大的裸机程序(就是直接在硬件上跑的程序,因为操作系统就是直接跑在CPU上的,这样看待是可以的,不过这个裸机程序功能很多很强大),那么操作系统的启动很像MCU程序的启动。前者有一个很大的初始化程序完成很复杂的初始化,后者有一段不长的汇编代码完成一些简单的初始化。这一点看,它们在流程上是很相似的。
如果是系统上的程序启动呢?它们是由系统来决定的。Linux上在shell下输入。/p后,首先检查是否是一个内建的shell命令;如果不是,则shell假设它是一个可执行文件(Linux上一般是elf格式),然后调用一些相关的函数,将在硬盘上的p文件的内容拷贝到内存 (DDR RAM)中,并建立一个它的运行环境(当然这里边还有内存映射、虚拟内存、连接与加载等一些其它东西),准备执行。
由以上可知,单片机上的程序和平时在系统上运行的程序,在启动时差异是很大的(如果将程序调用main以前的动作,都抽象为初始化的话,程序的启动可以简化为:建立运行环境+调用main函数,这样程序的执行差异是不大的)。因为单片机上跑的程序(裸机程序)是和操作系统一样跑在硬件上的,它们属于一个层次的。过去之所以没有区分出单片机上的程序和PC机上的程序的一些差异,就是没有弄明白这一点。由此,以前的一些疑惑也就解开了。为什么在单片机上的程序不怎么使用malloc,而PC上经常使用?因为单片机上没有已经写好的内存管理算法的代码,而在PC上操作系统里运行的程序,libc已经把这些都做了,只需要调用就可以了。如果在单片机上想用动态内存,也可以,但是这些代码要自己去实现,并定义一个相应的malloc,有时候一些公司会给提供一些库函数可能会实现malloc,但是因为单片机上RAM内存十分有限,如果不知道它的运行方式,估计会很危险。同样,因为在PC的系统上运行的程序与裸机程序不同,裸机程序不会有动态链接,有的只是静态链接。

- 为什么在单片机上的程序不怎么使用malloc,而PC上经常使用?
- 实现PC机与单片机双向通信的C语言程序设计实例免费下载 29次下载
- 使用51单片机实现PC串口通信程序和仿真免费下载 41次下载
- 使用Labview实现PC通信与单片机测控源程序的合集免费下载 24次下载
- 单片机与PC机串口通讯仿真的程序和电路图免费下载 35次下载
- 如何使51单片机与PC进行串口通信详细资料和程序免费下载
- 使用Visual Basic实现PC与多个单片机串口通信的资料和程序
- 单片机到PC机数据传送实验程序的资料免费下载 13次下载
- 单片机应用程序综合实例——单片机与接口技术 0次下载
- 单片机开发工具大全 2.5k次下载
- PC与单片机串口通信【多种任务程序集合】_程序案例 33次下载
- PC与单片机串口通信_labview程序案例 111次下载
- PC机与单片机串口通信程序设计.zip 0次下载
- PC机与单片机串口通信程序设计 0次下载
- 51单片机与PC串口通信程序 40次下载
- 单片机怎么写入程序 3.4k次阅读
- 单片机里的程序是如何运行? 5.8k次阅读
- 内存管理模块mem_malloc介绍及测试验证实验 3.5k次阅读
- 单片机的主程序是如何执行的 1.1w次阅读
- 单片机实现多机通信的资料和程序 8.5k次阅读
- 一个单片机与PC机通信的程序 6.4k次阅读
- 基于RS485总线实现单片机与PC机的远程控制设计 5.1k次阅读
- 如何实现ATMEGA16单片机与PC机的通信 1.8k次阅读
- 单片机与PC串口通信的程序及电路图详解 1.6w次阅读
- 单片机延时程序基本知识汇总 2.2w次阅读
- 怎么读取单片机程序_单片机程序是如何执行的_如何读懂单片机程序 7.9w次阅读
- STC单片机烧写程序步骤说明 7.5w次阅读
- 如何使用Keil3开发51单片机程序 8k次阅读
- 单片机与程序设计(上) 8.2k次阅读
- 单片机程序总跑飞?小技巧帮你忙 8.9k次阅读
下载排行
本周
- 1美的电磁炉电路原理图资料
- 4.39 MB | 16次下载 | 10 积分
- 2反激式开关电源设计解析
- 0.89 MB | 2次下载 | 5 积分
- 3简易光伏控制器原理图资料
- 0.07 MB | 1次下载 | 5 积分
- 4TPS23755数据手册
- 0.07 MB | 次下载 | 免费
- 536伏,10兆赫兹低噪声双运算放大器COS5532 技术手册
- 0.41 MB | 次下载 | 免费
- 6LM5176 55V 宽输入电压同步4开关降压/升压控制器技术手册
- 2.40 MB | 次下载 | 免费
- 7MCU模块原理图资料
- 0.37 MB | 次下载 | 1 积分
- 8LoRa1121 FCC&CE认证 多频段LoRa无线通讯模块规格书
- 997.05 KB | 次下载 | 免费
本月
- 1美的电磁炉电路原理图资料
- 4.39 MB | 16次下载 | 10 积分
- 2冷柜-电气控制系统讲解
- 13.68 MB | 7次下载 | 10 积分
- 3SDFM 激光测距模块模组手册
- 0.54 MB | 7次下载 | 免费
- 4直流电路的组成和基本定律
- 1.67 MB | 4次下载 | 免费
- 5SW6238V ACCC 三 PD 四口多协议移动电源 SOC规格书
- 0.59 MB | 4次下载 | 1 积分
- 6安川A1000变频器中文版说明书
- 20.16 MB | 3次下载 | 3 积分
- 7IP6742_datasheet_100V8A 同步 BUCK 控制器
- 2.16 MB | 3次下载 | 免费
- 8PAW3395DM-T6QU:光学游戏导航芯片手册
- 1.26 MB | 2次下载 | 10 积分
总榜
- 1matlab软件下载入口
- 未知 | 935137次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420064次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233094次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191448次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183360次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81605次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73829次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65991次下载 | 10 积分
电子发烧友App





创作
发文章
发帖
提问
发资料
发视频
上传资料赚积分
评论