【MCU 01】MCU是怎么启动的?

【引子】

对于初次接触MCU的小伙伴来说,应该很好奇为什么MCU上电后就自动执行到了main函数,在此之前MCU经历了什么?MCU从上电的一瞬间开始是怎么一步一步执行到main函数的?让我们带着这些疑问开启今天的内容分享。

【正文】

第一回 操作系统下的C程序是怎么运行的?

我们以下面一个例子来粗略介绍一下C程序是怎么在Linux操作系统下执行的(仅做了解,不必深究),以次来引入MCU的启动,看这样一段代码:

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("Hello World\n");

    return 0;
}

相信这段代码大家都不陌生,我们在Linux下编译完该程序后得到一个a.out的可执行文件,毋庸置疑,这个可执行程序是存储在磁盘里的,当我们在命令行里执行./a.out命令时,由于不能在磁盘里执行程序,操作系统会帮我们把这段代码加载到内存中运行,粗略的步骤如下所示:

  • 1)首先shell会创建一个新的子进程,创建完毕后内核使用execve系统调用加载a.out,execve会替换当前进程的内存空间,将a.out的二进制代码和数据段加载到进程的地址空间(内存)中,这意味着新进程将从a.out的main函数开始执行。
  • 2)其次,如果a.out是一个使用动态链接的程序,内核会调用动态链接器来解析和加载程序中所需的动态库,动态链接库会将这些库的代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值