【2】uC/OS-III应用开发————>启动流程(STM32F767)

  1. 简述:
    1. 上电启动,分为三个阶段
      1. CPU内核的初始化,ARM公司编写,所用CPU的.s文件
      2. 外设模块的初始化
      3. OS相关操作的初始化、启动、调度等等
  2. 系统的启动
    1. 上电执行启动文件里面的复位函数Reset_Handler
    2. 复位函数中调用C库函数_main跳转到主程序
    3. 调用SystemInit来进行系统初始化
  3. 外设模块
    1. 初始化系统时钟
    2. 中断分组
    3. 外设:GPIO、串口...等等
    4. 注:这些外设的初始化一般放在BSP_Init()函数中
  4. OS系统启动相关操作
    1. 系统初始化:OSInit()函数
      1. 初始化操作系统相关的全局变量、链表结构
      2. 空闲任务的初始化
      3. 时钟节拍任务的初始化
      4.  空闲与时钟节拍这两个任务是必须存在的,否则系统无法运行
    2. 空闲任务:OS_TickTaskInit()
      1. 空闲任务的相关信息由系统默认指定,用户不能轻易修改
      2. 空闲任务是一个无限的死循环
      3. 其优先级最低,任务比它高的任务都能抢占它得到CPU的使用权
      4. CPU不会停止工作,当其它任务都处于阻塞中,系统才会运行空闲任务
    3. CPU(时间戳)初始化CPU_TS_TmrInit()
      1. 利用内核中的DWT中的CYCCNT(向上计数器),记录内核时钟运行的个数
      2. 内核时钟跳动一次,该计数器加1
      3. CYCCNT精度非常高,其精度取决于内核的频率
      4. 例如STM32F7时钟为216M,精度 = 1/216M = 4.6ns
      5. 主要用于测试任务执行效率
    4. SysTick初始化OS_CPU_SysTickInit()
      1. 时钟节拍的频率表示操作系统每1秒钟产生多少个tick
      2. tick:操作系统节拍的时钟周期,系统以固定的频率产生中断(时基中断)并且在中断中处理与时间相关的事件,推动任务向前运行
      3. 时钟节拍依赖于硬件定时器,Crotex-m中经常使用的SysTick时钟是MCU的内核定时器
      4. 默认频率为1000Hz,频率过高,增加系统负担,过低,影响任务切换
    5. 内存初始化Mem_Init()
      1. 系统采用一块连续的大数组作为系统管理的内存
      2. 使用前先将管理的内存进行初始化
    6. 启动函数OSStart()
      1. 创建完任务的时候,需要开启调度器,让系统开始运行
    7. 主函数main.c
      1. 参考上节
  5. 下载验证
  6. 总结
    1. 本节无例程,只是对uC/OS-III的启动流程分析
  7. 参考资料:
    1. 正点原子《STM32F767 UCOS开发手册》
    2. 野火《uC/OS-III内核应用与开发》
    3. 《嵌入式实时操作系统 uC/OS-III原理及应用(第二版)》
    4. 官方源码
  8. 硬件平台:
    1. 正点原子阿波罗F767
  9. 软件平台:
    1. MDK5.2.5
  10. 库版本:
    1. TM32Cube_FW_F7_V1.4.0
  11. uC/OS-III版本
    1. UCOSIII 3.04
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值