C代码替代汇编代码实现启动ARM-M内核CPU

本文探讨了如何在系统架构设计中避免依赖特定芯片厂商的.S启动文件,以实现更佳的兼容性。通过利用ARM Cortex-M内核的特性,以C语言编写启动代码,以适用于STM32等不同类型的单片机,简化产品开发流程。
摘要由CSDN通过智能技术生成

      通常情况下,我们可以直接使用芯片厂商提供的.S启动文件来启动我们的CPU,但在实际产品开发中,我们需要设计一个系统架构能够兼容不同芯片厂商的芯片,而CPU的启动代码则不同,因此如果有个毕竟好的架构能够实现这功能那对于产品的开发帮助是极大的,幸好ARM公司的cortex-m内核有着良好的兼容性,对于这个,我们可以这样实现,以下以STM32单片机为例,其他的芯片类型,都是可以使用这种方式来启动芯片,而不用考虑.S文件。


1、首先要知道CPU最简单的启动代码一般包括堆栈初始化,全局变量初始化,向量表初始化,最后跳转到用户主程序main执行,而这边的main函数可以自己定义,但学过C语言的都知道,通常我们认为main函数是入口函数,那么这边我们就暂时认为它就是入口函数,其实真正意义来说,这个只能算是应用程序的入口函数;


2.CPU启动的时候cortex-m3的会执行如下过程,
1),从地址0x0000 0000取出4bytes的数据作为MSP的值;
2),从地址0x0000 0004取出4bytes的数据作为复位的PC值;
3),PC跳到复位向量处开始往下执行程序代码。
 ARM公司规定的是那样,不过ST公司的启动位置在0x0800 0000地址,看到这边是不是感觉,诶,这个怎么办,其实这边是因为ST公司自动做了地址映射处理,将0x0800 0000地址映射到0x0000 0000地址,这样就符合ARM corte-m内核的规范了,

3&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值