从裸机到嵌入式Linux—为什么所有芯片启动都是汇编语言开始

从裸机到嵌入式Linux—为什么所有芯片启动都是汇编语言开始

main函数是程序的入口,但不是上电最先执行的函数

对于很多人来说,main函数是所有程序的入口函数,逻辑的执行都是main函数开始的,这没有问题,但main函数并不是上电最先执行的函数,如果看过一些芯片启动的启动文件,其实不难发现,这些芯片的启动文件大多是.s结尾,也就是说这些启动文件是用汇编语言编写的,包括STM32、NXP i.MX 等等芯片,其实所有的执行函数代码的芯片都要经历执行汇编语言这个过程,只不过在单片机裸机阶段,厂商提供的工程给我们写好了启动过程需要的汇编代码,这个过程对我们而言是透明的,但是几乎所有的嵌入式Linux教程第一节实操课都是用汇编语言写启动代码。

为什么是汇编语言

main函数是C语言的函数入口,C语言的正常执行需要准备堆和栈,这样申请的内存空间、定义的变量、函数的跳转才能在内存中找到位置,函数才能正常的执行,但是汇编语言不需要,汇编语言直接操作寄存器,由于芯片刚刚上电可以通过电路配置寄存器的默认值,但是由于不同的芯片挂在的内存的不同包括内存空间分配的不同,不可能上来就设置好默认的C语言执行环境,需要汇编语言直接操作芯片和外设芯片的寄存器把环境准备好,然后跳入main函数。

持续更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷达爆破手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值