UCOSIII操作系统

  • UCOSIII操作系统——系统初始化篇(2)CPU,SysTick,内存初始化
    • CPU初始化
    • SysTick初始化
    • 内存初始化
    • 初始化实例

UCOSIII其他内容导航不迷路
UCOSIII操作系统-简介
【UCOSIII操作系统】任务篇(1)创建任务
【UCOSIII操作系统】任务篇(2)相关API函数
【UCOSIII操作系统】系统初始化篇(1)系统初始化
【UCOSIII操作系统】硬件初始化篇(1)硬件初始化以及开始运行系统
【UCOSIII操作系统】消息队列篇(1)消息队列
【UCOSIII操作系统】消息队列篇(2)任务消息队列
【UCOSIII操作系统】信号量与互斥量篇(1)信号量
【UCOSIII操作系统】信号量与互斥量篇(2)互斥量
【UCOSIII操作系统】信号量与互斥量篇(3)任务信号量
【UCOSIII操作系统】事件篇
【UCOSIII操作系统】中断管理篇
【UCOSIII操作系统】临界段篇
【UCOSIII操作系统】软件定时器篇
【UCOSIII操作系统】内存管理篇
已完结

说在前面:
这个内容不适合0基础的人,因为这里只讲了应用层面的东西,并没有深入内核讲解,所以要从零开始学UCOSIII的朋友,可以先去学完入门内容,再来观看这个笔记加深印象。
这篇文章是个人学习整理,如有错误请指正

UCOSIII操作系统——系统初始化篇(2)CPU,SysTick,内存初始化

CPU初始化

  • 函数原型
    CPU_Init();      //初始化 CPU 组件(时间戳、关中断时间测量和主机名)
  • 时间戳初始化
  • 最大关中断时间测量初始化
  • CPU 名字初始化
    一般在开始任务里面,硬件初始化之后再CPU初始化

SysTick初始化

时钟节拍的频率表示操作系统每1秒钟产生多少个tick,tick即是操作系统节拍的时钟周期,时钟节拍就是系统以固定的频率产生中断(时基中断),并在中断中处理与时间相关的事件,推动所有任务向前运行。
时钟节拍需要依赖于硬件定时器,在STM32裸机程序中经常使用的SysTick 时钟是MCU的内核定时器,通常都使用该定时器产生操作系统的时钟节拍。
用户需要先在“os_ cfg_ app.h” 中设定时钟节拍的频率,该频率越高,操作系统检测事件就越频繁,可以增强任务的实时性,但太频繁也会增加操作系统内核的负担加重,所以用户需要权衡该频率的设置。

  • 在操作系统中,通常软件定时器以系统节拍为计时的时基单位。系统节拍是系统的心跳节拍,表示系统时钟的频率,就类似人的心跳,1S能跳动多少下,系统节拍配置为OS_CFG_TICK_RATE_HZ, 该宏在os_ app_ cfg.h 中有定义,默认是1000。 那么系统的时钟节拍周期就为1ms (1s 跳动1000下,每一下就为1ms)。

函数OS_ CPU_ SysTickInit(用 于初始化时钟节拍中断,初始化中断的优先级,SysTick中断的使能等等,这个函数要跟不同的CPU进行编写,并且在系统任务的第一个任务开始的时候进行调用,如果在此之前进行调用,可能会造成系统奔溃,因为系统还没有初始化好就进入中断,可能在进入和退出中断的时候会调用系统未初始化好的一-些模块。

  • 关于滴答定时器这一方面我自己也是没能很清晰的理解,就知道是系统的心跳,为OS提供时基,阻塞延时的函数也是以SysTick的时基为基准计时的,具体配置要根据不同的内核查资料配置吧。

内存初始化

我们都知道,内存在嵌入式中是很珍贵的存在,而一个系统它是软件,则必须要有一块内存属于系统所管理的,所以在系统创建任务之前,就必须将系统必要的东西进行初始化,uCOS采用一块连续的大数组作为系统管理的内存,CPU_ NT08U Mem_Heap[LIB__MEM_CFG_HEAP_SIZE],在使用之前就需要先将管理的内存进行初始化。

  • 函数原型
Mem_Init();       //初始化内存管理组件(堆内存池和内存池表)

在CPU初始化,和SysTick初始化之后再初始化内存。
就这么写吧,能保证系统正常工作就行了,现在的资料也没有很好的解释这些东西…

初始化实例

int  main (void)
{OS_ERR  err;/* 初始化系统*/OSInit(&err);                                               /* 创建任务 */OSTaskCreate((OS_TCB     *)&AppTaskStartTCB,                (CPU_CHAR   *)"App Task Start",(OS_TASK_PTR ) AppTaskStart,(void       *) 0,(OS_PRIO     ) APP_TASK_START_PRIO,(CPU_STK    *)&AppTaskStartStk[0],(CPU_STK_SIZE) APP_TASK_START_STK_SIZE / 10,(CPU_STK_SIZE) APP_TASK_START_STK_SIZE,(OS_MSG_QTY  ) 5u,(OS_TICK     ) 0u,(void       *) 0,(OS_OPT      )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),(OS_ERR     *)&err);/* 开启调度*/OSStart(&err);                                              }/************************************************************************ @ 函数名  : AppTaskStart* @ 功能说明: 为了方便管理,所有的任务创建函数都放在这个函数里面* @ 参数    : 无  * @ 返回值  : 无**********************************************************************/static  void  AppTaskStart (void *p_arg)
{CPU_INT32U  cpu_clk_freq;CPU_INT32U  cnts;OS_ERR      err;(void)p_arg;/* 开发板硬件初始化 */BSP_Init();  /* CPU始化*/CPU_Init();/* SysTick初始化*/cpu_clk_freq = BSP_CPU_ClkFreq();                           cnts = cpu_clk_freq / (CPU_INT32U)OSCfg_TickRate_Hz;        OS_CPU_SysTickInit(cnts);                                   /* 内存初始化*/Mem_Init(); #if OS_CFG_STAT_TASK_EN > 0uOSStatTaskCPUUsageInit(&err);
#endifCPU_IntDisMeasMaxCurReset();OSTaskCreate((OS_TCB     *)&AppTaskStartTCB1,                (CPU_CHAR   *)"App Task Start1",(OS_TASK_PTR ) AppTaskStart1,(void       *) 0,(OS_PRIO     ) APP_TASK_START_PRIO1,(CPU_STK    *)&AppTaskStartStk1[0],(CPU_STK_SIZE) APP_TASK_START_STK_SIZE / 10,(CPU_STK_SIZE) APP_TASK_START_STK_SIZE,(OS_MSG_QTY  ) 5u,(OS_TICK     ) 0u,(void       *) 0,(OS_OPT      )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),(OS_ERR     *)&err);OSTaskDel ( & AppTaskStartTCB, & err );
}

【UCOSIII操作系统】系统初始化篇(2)CPU,SysTick,内存初始化相关推荐

  1. 【UCOSIII操作系统】任务篇(1)创建任务

    UCOSIII操作系统 UCOSIII操作系统--任务篇(1)创建任务 一.UCOSIII--任务 简介 二.创建任务流程 1.定义任务栈 2.定义任务控制块TCB 3.定义任务主体函数 4.创建任务 ...

  2. Linux系统查看当前主机CPU、内存、机器型号及主板信息

    Linux系统查看当前主机CPU.内存.机器型号及主板信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 查 ...

  3. Win10系统自带的CPU和内存悬浮窗口

    Win10自带游戏模式 使用win+G快捷键打开游戏栏 若不能打开游戏栏,是因为设置里没有开启游戏栏,开启游戏栏的方法就是打开设置,进入游戏设置. 将圈中的部分打开就可以了. 接下来就可以使用Win+ ...

  4. 【linux】查看Linux操作系统版本、内核、CPU和内存信息

    0.参考 https://blog.csdn.net/SoaringLee_fighting/article/details/71755587 https://www.cnblogs.com/vael ...

  5. Linux学习之系统编程篇:shm 共享内存及其操作函数

    一.shm 和 mmap 的区别 (1)mmap 是在磁盘上建立一个文件,每个进程地址空间中开辟出一块空间进行映射.shm 每个进程最终会映射到同一块物理内存.shm 保存在物理内存,这样读写的速度最 ...

  6. Linux系统、版本、CPU、内存查看、硬盘空间

    查看系统版本:lsb_release -a [root@localhost /]# lsb_release -a LSB Version:    :core-4.0-amd64:core-4.0-no ...

  7. 查看系统硬件信息(CPU、内存、磁盘、网卡)

    作者新建了QQ群:460430320,供大家交流测试心得(培训机构勿进).另外,还会不定期上传测试资料,也欢迎您共享测试资料. 导读 Windows查看系统硬件信息 CentOS查看系统硬件信息 Wi ...

  8. 【UCOSIII操作系统】系统初始化篇(1)系统初始化

    UCOSIII操作系统 UCOSIII操作系统--系统初始化篇(1)系统内部任务 系统初始化函数 UCOSIII默认有5个系统任务: 空闲任务 时钟节拍任务 统计任务 定时任务 中断服务管理任务 UC ...

  9. 【UCOSIII操作系统】简介

    UCOSIII操作系统 现在开始整理UCOSIII实时操作系统的内容 UCOSIII 简介 关于UCOSIII的移植 现在开始整理UCOSIII实时操作系统的内容 UCOSIII其他内容导航不迷路 U ...

最新文章

  1. 2009-徘徊-开场白
  2. DeepMind论文解读:让机器更深入地理解文本
  3. GitHub趋势榜第一:超级命令行工具Semantic,比较解析源代码
  4. Redis Cluster集群架构实现
  5. 将自己名字PS到他人论文上,并推文说在Nature上发了新文章,如此操作你见过吗?...
  6. 漫步线性代数六——逆和转置
  7. 使用js生成条形码以及二维码
  8. 系统学习机器学习之线性判别式(二)
  9. 2018-2019-2 网络对抗技术 20165322 Exp5 MSF基础应用
  10. QT ListView 记录
  11. eclipse中文汉化操作 2020-12
  12. java的hashmap排序_java 中HashMap排序
  13. win10商店下载位置_win10应用商店下载的东西在哪
  14. oneNote笔记名不同步
  15. C语言——恶搞关机小程序
  16. usb接口和计算机通信,USB接口是如何进行通信的?
  17. MobaXterm连接局域网的虚拟机
  18. 搜索推荐广告三者异同
  19. 为知笔记打不开 ziw 文件问题
  20. openwrt编译教程(第一章)

热门文章

  1. 分支覆盖率 代码覆盖率_100%代码覆盖率神话
  2. opencv库配置常见问题
  3. 九寨沟-乐山-峨眉山一周游记
  4. 多任务学习---综述
  5. 颅内EEG数据可用于开发语音脑机接口和语音神经假肢
  6. C语言 const变量能不能修改?
  7. Mac Vue 脚手架创建
  8. DAMA国际认证 CDMP题库预览题 带翻译和解析
  9. 【数据挖掘】 基于二手车交易价格预测-赛题分析
  10. 云计算安全性有哪些?