[uC/OS-III] 18. uC/OS-III 的启动流程

在目前的 RTOS 中,主要有两种比较流行的启动方式:
1.  万事俱备,只欠东风

在 main 函数中将硬件初始化,RTOS 系统初始化,所有任务的创建这些都弄好,这个我称之为万事都已经准备好。最后只欠一道东风,即启动 RTOS 的调度器,开始多任务的调度。

2. 小心翼翼,十分谨慎

在 main 函数中将硬件和 RTOS 系统先初始化好,然后创建一个启动任务后就启动调度器,然后在启动任务里面创建各种应用任务,当所有任务都创建成功后,启动任务把自己删除。

3. 系统的启动

在系统上电的时候第一个执行的是启动文件里面由汇编编写的复位函数Reset_Handler,复位函数的最后会调用 C 库函数__main。 __main 函数的主要工作是初始化系统的堆和栈,最后调用 C 中
的 main 函数,从而去到 C 的世界。

  • 系统初始化: 在调用创建任务函数之前,我们必须要对系统进行一次初始化,而系统的初始化是根据我们配置宏定义进行初始化的,有一些则是系统必要的初始化,如空闲任务的初始化,时钟节拍的初始化,这两个任务是必须存在的任务,否则系统无法正常运行;
  • CPU初始化:   
  • SysTick初始化:函数 OS_CPU_SysTickInit()用于初始化时钟节拍中断,初始化中断的优先级, SysTick中断的使能等等,这个函数要跟不同的 CPU 进行编写;
  • 内存初始化:uCOS 采 用 一 块 连 续 的 大 数 组 作 为 系 统 管 理 的 内 存 , CPU_INT08U
    Mem_Heap[LIB_MEM_CFG_HEAP_SIZE],在使用之前就需要先将管理的内存进行初始化;
  • OSStart():在创建完任务的时候,我们需要开启调度器,因为创建仅仅是把任务添加到系统中,还没真正调度,那怎么才能让系统支持运行呢, uCOS 为我们提供一个系统启动的函数接口——OSStart(),我们使用 OSStart()函数就能让系统开始运行;
  • app.c :当我们拿到一个移植好 uCOS 的例程的时候,不出意外,你首先看到的是 main 函数,当你认真一看 main 函数里面只是让系统初始化和硬件初始化,然后创建并启动一些任务,因为这样子高度封装的函数让我们使用起来非常方便,防止用户一不小心忘了初始化系统的某些必要资源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值