使用LiteOS Studio揭秘LiteOS在STM32上怎么运行
发布时间:2022-07-30 16:07:12 所属栏目:系统 来源:互联网
导读:本文基于LiteOS一站式开发工具LiteOS Studio,通过单步调试,来动态分析LiteOS的启动流程,给开发者一个更直观的展示。 1、LiteOS Studio环境准备 在开始前,需要准备好LiteOS Studio环境,包含LiteOS Studio安装、新建工程、编译、烧录,掌握LiteOS Studio
本文基于LiteOS一站式开发工具LiteOS Studio,通过单步调试,来动态分析LiteOS的启动流程,给开发者一个更直观的展示。 1、LiteOS Studio环境准备 在开始前,需要准备好LiteOS Studio环境,包含LiteOS Studio安装、新建工程、编译、烧录,掌握LiteOS Studio如何调测等等,可以参考官网文档站点https://liteos.gitee.io/liteos_studio/#/project_stm32。 如何搭建LiteOS Studio开发环境 请参考搭建Windows开发环境。 如何新建STM32F769IDISCOVERY的LiteOS工程 请参考 新建工程。 如何编译,烧录、调测,请分别参考 编译配置-编译代码,烧录配置-烧录,调试器-执行调试。 注意,如果开发板使用的是板载ST-LINK仿真器,需要刷为JLINK。请参考 st-link仿真器单步调测。 2、los_startup_gcc.S启动引导文件介绍 当对STM32F769IDISCOVERY开发板进行上电操作或者复位操作时,该开发板会从异常向量表中获取Reset_Handler函数的地址并执行该函数。汇编文件targetsSTM32F769IDISCOVERYlos_startup_gcc.S定义了该函数。 los_startup_gcc.S是启动引导文件,从Reset_Handler开始到执行main函数,主要工作就是准备C代码的运行环境,具体包括: 设置栈指针SP,对应语句 ldr sp, =_estack。 初始化中断向量,对应函数LoopCopyVectorInit。 初始化data段,对应函数LoopCopyDataInit。 初始化bss段,对应函数LoopFillZerobss。 初始化系统时钟,跳转到函数SystemInit。 跳转到 C 代码函数main 代码如下: 复制 Reset_Handler: cpsid i ldr sp, =_estack /* set stack pointer */ /* Copy the vector_ram segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyVectorInit CopyVectorInit: ldr r3, =_si_liteos_vector_data ldr r3, [r3, r1] str r3, [r0, r1] adds r1, r1, #4 LoopCopyVectorInit: ldr r0, =_s_liteos_vector ldr r3, =_e_liteos_vector adds r2, r0, r1 cmp r2, r3 bcc CopyVectorInit /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyDataInit CopyDataInit: ldr r3, =_sidata b LoopFillZerobss /* Zero fill the bss segment. */ FillZerobss: movs r3, #0 str r3, [r2], #4 LoopFillZerobss: ldr r3, = _ebss cmp r2, r3 bcc FillZerobss /* Call the clock system initialization function.*/ bl SystemInit /* Call static constructors */ /* bl __libc_init_array */ /* Call the application's entry point.*/ bl main bx lr (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |