uCOS 原理 - 任务概览
uCOS-II 中的一个重要组成部分就是 任务,因为大多数嵌入式设备的处理器能力有限,所以大多的 RTOS 都采用了多进程/单线程模型;这就意味着 OS 需要通过在不同的任务之间切换,而如何创建、管理任务就成为了一个重要的组成部分。
任务基础
uCOS-II 的任务通常就是一个无限的循环,就像我们在裸机编程时使用的循环一样:
1 | void task(void* pdata) { |
那么问题就来了,既然每个任务都是无穷循环,如何从一个任务跳转到另一个任务中呢?
锋芒在胸,如鲠在喉;无枪在手,刺客之仇
uCOS-II 中的一个重要组成部分就是 任务,因为大多数嵌入式设备的处理器能力有限,所以大多的 RTOS 都采用了多进程/单线程模型;这就意味着 OS 需要通过在不同的任务之间切换,而如何创建、管理任务就成为了一个重要的组成部分。
uCOS-II 的任务通常就是一个无限的循环,就像我们在裸机编程时使用的循环一样:
1 | void task(void* pdata) { |
那么问题就来了,既然每个任务都是无穷循环,如何从一个任务跳转到另一个任务中呢?
Floyd-Warshall 算法是图论中的一个经典多源最短路径算法,今天我和大家一起来学习这个算法。
我不想像其他能查到的大部分介绍该算法的中文文章一样,直接贴算法代码;相反,我想和大家一起讨论这个算法的思想,并且证明它的正确性。
在 Cortex 内核中有着大量的中断向量,当中断被设置并且发生的时候,系统就会从 Thread 模式切换至 Handler 模式;而 NVIC 则保证了中断可嵌套。
但是有的时候我们希望某些代码的执行过程中不要被中断,这些代码被称为临界段代码 Critical Section;那么,在 uCOS 中,系统又是如何做到的呢?
文章不够正能量,希望大家看看就图一乐。
很喜欢这首《За тебя, Родина-мать》,歌名翻译过来是《为了您,祖国母亲》
这首歌是俄罗斯有名的乐队柳拜创作的,普京都是他们的歌迷,他们还曾经在克林姆林宫旁的红场演出过。
这种“俄罗斯”式的军旅音乐,让我想起彼得堡宽阔的涅瓦河,想起莫斯科那飘扬的三色旗,想起摩尔曼斯克天空中瞬息万变的极光;在一个地方呆一段时间总会有些感情,不论那里的人给我留下什么印象,芬兰湾清澈的海水、冬日的皑皑白雪、高耸的白桦林,总是让我时常怀念。
在网上没有找到这首歌比较不错的中文翻译,于是自己翻译一份。
因为水平有限,翻译中有错误还请大家指出。
因为家里的老 2.4GHz 路由器和蓝牙的冲突太严重了,每次使用 AirPods Pro 听歌,我的 MacBook Pro 就断流严重;所以决定买一个新的 5GHz 路由,当时想到的需求有:
在朋友的推荐之下选择了这款 ACRH17 路由。
买来新的路由器之后第一件事就是刷了 Merlin 固件,前三点都很好实现;但是第三方固件刷入之后官方的 Time Machine 支持却消失了。
之前博客部署在阿里云的轻量服务器上,因为不想在国内备案的原因,选择了香港地区的服务器,在外面套了一层 Cloudflare 的 CDN,这样可以给站点加上小绿锁,也不用自己担心证书的问题。
之前的博客访问起来速度只能说一般般,毕竟离开大陆的服务器少有访问速度快的,Cloudflare 的 Anycast 在国内经常被绕到美国,这也是没办法的,国内的网络环境太复杂了。
但这些都不是迁移博客的原因,前一段时间在更新了 Wordpress 之后,貌似它们又搞了一个什么新的编辑器?在那之前我还可以把在本地写好的 Markdown 进行少量修改的复制过去发布文章,这次之后就完全不能了;而且对 LaTex 的支持还必须启用插件。这对只想安安静静写两篇帖子的我来说简直是太难过了 —— 折腾来折腾去,过一段时间还得升级,升级之后你也不知道会发生什么。
那就迁移吧,Hexo 是个不错的选择;毕竟折腾一次,以后轻松。