网站标题第一个词做网站挣钱
2026/4/17 5:03:26 网站建设 项目流程
网站标题第一个词,做网站挣钱,seo搜索引擎优化人才,centos一键wordpressARM Cortex-M CPU从0x00000000取指执行的完整流程核心逻辑#xff1a;CPU上电复位后#xff0c;先从0x00000000地址完成栈指针初始化#xff0c;再从0x00000004地址跳转到复位处理函数#xff0c;最终通过启动文件完成内存初始化并进入用户main函数。一、硬件复位阶段…ARM Cortex-M CPU从0x00000000取指执行的完整流程核心逻辑CPU上电复位后先从0x00000000地址完成栈指针初始化再从0x00000004地址跳转到复位处理函数最终通过启动文件完成内存初始化并进入用户main函数。一、硬件复位阶段核心读取中断向量表前两个值0x00000000是Cortex-M的中断向量表起始地址物理地址通常映射到Flash 0x08000000或系统Bootloader由BOOT0/BOOT1引脚配置复位后CPU优先执行两步核心操作加载主栈指针MSPCPU从0x00000000地址读取4字节数据作为栈指针SP的初始值通常指向RAM顶部如0x20008000LDR sp, [0x00000000] ; 初始化栈指针为后续函数调用做准备跳转到复位处理函数CPU从0x00000004地址读取4字节的复位向量Reset_Handler函数地址并将其赋值给程序计数器PC触发跳转LDR pc, [0x00000004] ; 跳转到启动文件中的Reset_Handler二、启动文件startup.s执行阶段Reset_Handler核心逻辑Reset_Handler是系统第一个执行的函数完成程序运行前的内存初始化步骤如下Reset_Handler: ; 1. 初始化.data段将Flash中存储的已初始化全局变量复制到RAM LDR r0, _sdata ; RAM中.data段起始地址VMA LDR r1, _edata ; RAM中.data段结束地址 LDR r2, _sidata ; Flash中.data段加载地址LMA CopyDataLoop: LDR r3, [r2], #4 ; 从Flash读数据地址自增4 STR r3, [r0], #4 ; 写入RAM地址自增4 CMP r0, r1 ; 判断是否复制完成 BNE CopyDataLoop ; 未完成则循环 ; 2. 初始化.bss段将未初始化全局变量清零 LDR r0, _sbss ; RAM中.bss段起始地址 LDR r1, _ebss ; RAM中.bss段结束地址 MOVS r2, #0 ; 清零用的初始值 ZeroBssLoop: STR r2, [r0], #4 ; 向.bss段写入0地址自增4 CMP r0, r1 ; 判断是否清零完成 BNE ZeroBssLoop ; 未完成则循环 ; 3. 配置系统时钟硬件初始化 BL SystemInit ; 调用时钟配置函数初始化CPU/外设时钟 ; 4. 进入用户代码入口 BL main ; 跳转到main函数执行用户代码 ; 5. 异常处理main返回后进入死循环防止程序跑飞 B . ; 无限跳转到当前指令原地循环三、用户代码执行阶段完成上述初始化后CPU正式进入main()函数开始执行用户编写的业务逻辑若main()函数执行完毕返回CPU会进入Reset_Handler最后的死循环避免程序执行未知地址的指令。总结核心流程复位→初始化栈指针→跳转到Reset_Handler→初始化.data/.bss段→配置时钟→进入main函数关键地址0x00000000栈指针初始值、0x00000004复位函数地址物理映射由BOOT引脚决定核心目的启动文件完成内存段初始化.data复制、.bss清零为用户代码提供合法的运行环境。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询