了解从单片机到PC的系统程序中存在的问题:
从单片机知道,在加电时,MCU程序指针PC将在加电复位时初始化为地址,将从该地址开始执行读取程序程序开始在MCU上执行(当然,在调用程序主程序之前,还需要执行一系列其他初始化操作,例如堆栈的开始...
从微控制器得知,在上电时,MCU的程序指针PC将被初始化为上电复位时的地址,从该地址读取要执行的指令,程序开始执行在MCU上(当然,在调用程序主程序之前,还有一系列其他的事情。必须完成堆栈的初始化,例如堆栈的初始化,但是我们很少回去修改它们。) PC已经上电了,和MCU差不多,但是它读取BIOS。它已经完成了很多初始化操作。
如果在系统上启动程序怎么办?它们由系统启动来决定。在Linux上的shell下输入./p之后,首先检查它是否是内置的shell命令;如果不是,则Shell假定它是一个可执行文件(在Linux上通常为elf格式),然后调用一些Related函数,将硬盘上p文件的内容复制到内存(DDR RAM),并建立其操作环境(当然还有内存映射,虚拟内存,连接和加载等),随时可以执行。
从上面可以看出,单片机上的程序和启动时在系统上运行的程序有很大的不同(如果程序在将main抽象为初始化之前调用了该动作,则程序的启动可以简化为:建立操作环境+调用主函数,因此程序的执行差异不大)。因为在微控制器上运行的程序(裸机程序)是在操作系统之类的硬件上运行的,所以它们属于同一级别。我之所以没有区分微控制器上的程序和硬件上的程序之间的某些区别的原因。过去的PC是我不了解这一点。
微信公众号
深圳市博昌达电子科技有限公司专业提供单向可控硅,松翰单片机哪家实惠?NIKOSEM哪家好?单向可控硅怎么样?欢迎咨询!
CopyRight © 2020 版权所有 深圳市博昌达电子科技有限公司