1 电脑程序运行过程与单片机的区别
由于电脑中的程序是存储在磁盘中的,而磁盘的读取速度非常慢,因此我们不可能从磁盘中直接读取当前要执行的代码,这样必然导致程序阻塞。好在,电脑的内存非常大,所以在程序执行之前,先把整个代码copy到内存中,然后CPU从内存中读取一条条指令,并运行。
为了合理利用和规划内存资源,除了操作系统的内存管理外,最重要的是内存的分段。对每一个进程,操作系统都会为其分配一片内存,同时将其分段为代码段、数据段、堆栈段等等,不同的段具有不同的属性,比如代码段一般是只读的,如下图所示。(参考博客:https://blog.csdn.net/iostream1001001/article/details/77112455)
单片机首先没有磁盘,其次内存非常小,显然这种方式运行程序是不可能的。但好的一点是,单片机的代码是保存在flash中,相当于电脑的固态硬盘或ROM,CPU读取flash的速度虽然慢于内存,但依然是非常快的。因此我们不需要将代码搬移到内存中,直接从flash中读取就行了。
因此单片机的程序执行过程是,根据flash中的代码为函数分配堆栈和静态存储区,然后CPU读取flash中的指令,并读写内存中的数