
嵌入式操作系统
一路向北lm
嵌入式Linux研发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从0到1写嵌入式操作系统---------------------------1.新建Mini_OS工程
1.打开keil软件,新建工程名为MiniOS。 2.选择M3内核,本OS以M3内核为主. 3.组件这里勾选 CORE内核 和Startup启动项。 4.向Source Group 1 添加main.c文件。 5.将main.c文件保存在code\source路径下. 6.Main 函数中编写如下代码 unsigned char flag; void dela...原创 2019-06-19 12:56:18 · 852 阅读 · 1 评论 -
从0到1写嵌入式操作系统---------------------------2.PendSV的触发
PendSV典型使用场合是在上下文切换时(在不同任务之间切换)。 我们先简单的写几段代码实现PendSV的中断触发,当然也会涉及到CM3内核汇编指令,自从开始挑战的那天起,你不如地狱谁入地狱! 如何触发PendSV中断呢?从Cortex-M3权威指南手册上可以看到如下图所示,控制ICSR的28位置1便可以悬起PendSV 触发PendSV中断。 如...原创 2019-06-19 13:02:41 · 941 阅读 · 0 评论 -
从0到1写嵌入式操作系统---------------------------3.初次创建任务
1.什么是任务? 简单通俗的来讲,任务就是一个不会返回的函数。 void task1(void *param) { while(1) { //执行区域 .......... //执行区域 } } 更加深入的来谈任务的话,不得不考虑栈、堆、数据区、代码区和内核寄存器。其中数据区和代码区由编译器自动分配,各个任务相互独立,并不冲突。堆的作用主要是用在动态能存分...原创 2019-06-19 13:16:11 · 1021 阅读 · 1 评论 -
从0到1写嵌入式操作系统---------------------------4尝试两个任务的切换
上次我们创建了两个任务task1与task2,这次我们来实现tsak1与task2两个任务的切换。先了解下CM3内核的一些常用指令,不一定非要记住,只需要熟能生巧!先来看MSR和MRS指令。 MRS 加载特殊功能寄存器的值到通用寄存器MSR 存储通用寄存器的值到特殊功能寄存器 问题一:什么是特殊功能寄存器?包括哪些? 问题二:什么是通用寄存器?包括哪些? 这里也涉及到特殊功能寄存器和通...原创 2019-06-16 20:40:36 · 1191 阅读 · 0 评论 -
从0到1写嵌入式操作系统---------------------------5.双任务时间片切换
上次我们使用任务调度器实现了双任务的切换,在任务1和任务2函数中需要对 umTaskSched()函数进行多次调用,针对这个问题,下面提出关于是否可以自动周期调用umTaskSched()函数的方法。提出了一种基于时间片切换的方式,该方式如何触发?由谁来触发?使用定时器定时溢出产生中断来触发,该定时器就是Systick定时器,它是一个24位倒计数定时器,当计数到 0 时,将从RELOAD 寄存器中...原创 2019-07-11 16:06:53 · 447 阅读 · 0 评论