[stm32F4,1]__reset是个什么鬼,内核的preloader?

STM32F1上电后,第一条指令__reset开始,完成中断初始化、硬件配置、随机数生成、堆栈金丝雀初始化等任务。在进入内核前,会关闭中断、设置PSP、安装中断向量表、创建_main任务、初始化关键设备。通过编译条件选择NANOKERNEL或MICROKERNEL,分别对应单任务或多任务内核。下篇将详述STM32F4的移植过程。
摘要由CSDN通过智能技术生成

从洪荒时代,要启航到原始社会了,准备。

那么stm32f1 cpu上电后第一条指令__reset代码:

_ASM_FILE_PROLOGUE
GTEXT(__reset)
/* lock interrupts: will get unlocked when switch to main task */
    movs.n r0, #_EXC_IRQ_DEFAULT_PRIO //默认优先级
    msr BASEPRI, r0<span style="white-space:pre">	</span>//设置BASEPRI(基本优先级),当优先级不小于这个值时,cpu不处理异常

    /*
     * Set PSP and use it to boot without using MSP, so that it
     * gets set to _interrupt_stack during nanoInit().
     */
    ldr r0, =__CORTEXM_BOOT_PSP
    msr PSP, r0 <span style="font-family: Arial, Helvetica, sans-serif;">//设置PSP为sdram的末端0x100个字节。</span>

    movs.n r0, #2	/* switch to using PSP (bit1 of CONTROL reg) */
    msr CONTROL, r0//使能PSP作为堆栈指针

#ifdef CONFIG_WDOG_INIT
    /* board-specific watchdog initialization is necessary */
    bl _WdogInit //如果有加看门狗,初始化看门狗哟,移置之初,关掉它嘛。
#endif

    b _Prep
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值