【UCOSIII操作系统】系统初始化篇(2)CPU,SysTick,内存初始化
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,内存初始化相关推荐
- 【UCOSIII操作系统】任务篇(1)创建任务
UCOSIII操作系统 UCOSIII操作系统--任务篇(1)创建任务 一.UCOSIII--任务 简介 二.创建任务流程 1.定义任务栈 2.定义任务控制块TCB 3.定义任务主体函数 4.创建任务 ...
- Linux系统查看当前主机CPU、内存、机器型号及主板信息
Linux系统查看当前主机CPU.内存.机器型号及主板信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 查 ...
- Win10系统自带的CPU和内存悬浮窗口
Win10自带游戏模式 使用win+G快捷键打开游戏栏 若不能打开游戏栏,是因为设置里没有开启游戏栏,开启游戏栏的方法就是打开设置,进入游戏设置. 将圈中的部分打开就可以了. 接下来就可以使用Win+ ...
- 【linux】查看Linux操作系统版本、内核、CPU和内存信息
0.参考 https://blog.csdn.net/SoaringLee_fighting/article/details/71755587 https://www.cnblogs.com/vael ...
- Linux学习之系统编程篇:shm 共享内存及其操作函数
一.shm 和 mmap 的区别 (1)mmap 是在磁盘上建立一个文件,每个进程地址空间中开辟出一块空间进行映射.shm 每个进程最终会映射到同一块物理内存.shm 保存在物理内存,这样读写的速度最 ...
- Linux系统、版本、CPU、内存查看、硬盘空间
查看系统版本:lsb_release -a [root@localhost /]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-no ...
- 查看系统硬件信息(CPU、内存、磁盘、网卡)
作者新建了QQ群:460430320,供大家交流测试心得(培训机构勿进).另外,还会不定期上传测试资料,也欢迎您共享测试资料. 导读 Windows查看系统硬件信息 CentOS查看系统硬件信息 Wi ...
- 【UCOSIII操作系统】系统初始化篇(1)系统初始化
UCOSIII操作系统 UCOSIII操作系统--系统初始化篇(1)系统内部任务 系统初始化函数 UCOSIII默认有5个系统任务: 空闲任务 时钟节拍任务 统计任务 定时任务 中断服务管理任务 UC ...
- 【UCOSIII操作系统】简介
UCOSIII操作系统 现在开始整理UCOSIII实时操作系统的内容 UCOSIII 简介 关于UCOSIII的移植 现在开始整理UCOSIII实时操作系统的内容 UCOSIII其他内容导航不迷路 U ...
最新文章
- 2009-徘徊-开场白
- DeepMind论文解读:让机器更深入地理解文本
- GitHub趋势榜第一:超级命令行工具Semantic,比较解析源代码
- Redis Cluster集群架构实现
- 将自己名字PS到他人论文上,并推文说在Nature上发了新文章,如此操作你见过吗?...
- 漫步线性代数六——逆和转置
- 使用js生成条形码以及二维码
- 系统学习机器学习之线性判别式(二)
- 2018-2019-2 网络对抗技术 20165322 Exp5 MSF基础应用
- QT ListView 记录
- eclipse中文汉化操作 2020-12
- java的hashmap排序_java 中HashMap排序
- win10商店下载位置_win10应用商店下载的东西在哪
- oneNote笔记名不同步
- C语言——恶搞关机小程序
- usb接口和计算机通信,USB接口是如何进行通信的?
- MobaXterm连接局域网的虚拟机
- 搜索推荐广告三者异同
- 为知笔记打不开 ziw 文件问题
- openwrt编译教程(第一章)