加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 系统 > 正文

使用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

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读