首页/新闻资讯/正文详情

RL78G13移植BasicOS

发布时间:2026/9/29 7:08:44 来源:云帆数科 栏目:资讯中心
RL78G13移植BasicOS
BasicOS狗哥出品基于“共享栈”的协作式调度内核BasicOS一切都是为了用“RTOS的任务”的形式写MCU任务【可以但是必要不大】任务切换时需要处理任务栈有别于ProtoThread的Superloop唯一栈本质有栈协程 and 无栈协程无栈协程对比有栈协程 (BasicOS)每个任务配备独立私有栈切换时完整保存所有通用寄存器、栈指针 SP、程序断点 PC 与函数局部变量可在任意嵌套函数内暂停 / 恢复运行时动态记录断点位置进出点不固定。无栈假协程 (ProtoThreadwhile(1)循环)ProtoThread基于编译期静态状态机实现语法糖仅用 1 个状态变量line 行号记录执行分支while(1)循环的内部函数可通过轮询状态机的形式实现假并发软件定时器的并发不保存寄存器、PC、局部变量使用全局变量保存变量持续化的数据所有暂停 / 恢复分支地址编译时固定资源开销最小。轮流执行round-robin执行方式前后顺序就是优先级内部可使用状态机实现进入点和退出点的有限控制无栈真协程 (ctx)无独立任务栈共用全局主栈使用语法糖的形式保证了局部变量的持续化不是通过轮询的形式来仅在全局内存保存 PC 断点与少量核心寄存器无法在嵌套子函数中 yield运行时动态记录断点地址进出点不固定RAM 占用极低。大佬总结大佬的糖协作式调度大家文明排队轮到你就一直跑只有当你自己说 “我好了可以换人”调度器才能换下一个没人能强制把你赶下来。CPU 使用权只能由任务主动释放内核不会强行剥夺高优先级任务无法打断正在运行的任务只有当前运行任务主动让出 CPU调度器才有机会切换其他就绪任务。任务一旦拿到 CPU会持续运行直到主动调用 yield() / 任务切换接口 【suspend】主动阻塞延时、等待信号量、等待消息 【blocked】任务执行完毕退出。调度时机完全受控于任务代码中断不会引发任务上下文切换中断可以标记任务就绪但中断返回后一定回到被打断的原任务不会立刻切任务真正切换必须等到任务主动让出。不需要复杂的临界区保护相比抢占式不存在 “任务在任意指令中间被打断”只要不在共享资源访问中间调用 yield天然不会出现任务并发争抢破坏数据。各线程是线性执行不存在各线程间的资源共享中断都在任务栈中不像freertos一进入中断就切换到中断栈因为freertos在中断中可能会调度任务共享栈的情况中断都在任务栈中处理没有独立中断栈风险共享资源要“一次性”处理没有一次性处理完“共享资源”不要苛求系统实时性1.【考验程序设计】如果一个任务长时间运算、迟迟不 yield外部事件对应的任务迟迟得不到调度。例如按键检测任务需要 10ms 响应但是后台运算任务连续运行几百毫秒不释放 CPU按键响应严重滞后。长时间循环内部必须周期性插入 yield防止独占 CPU2.中断里“唤醒”高优先级任务【任务已经到了就绪时候】但是当前正在运行的任务不肯 yield新就绪任务只能“礼貌”排队等待。实时需求强的场景很难满足。3.TaskA低优先级正在运行TaskB高优先级已经就绪只要 TaskA 不主动 yield高优先级 B 一直无法调度。即使 B 事件紧急也必须等 A 自愿放手。只有yeild没有delay:导致任务一有空就运行cpu没得歇yield() 的定位主动临时让出 CPU不进入阻塞任务保持「就绪态」delay / 延时sleep让出 CPU 进入「阻塞等待态」到期才重新就绪饥饿问题任务1 优先级高任务2 3 优先级低一些且一致当任务2好了之后任务1立马就绪有没有可能到值任务3是始终无法执行高优先级任务空闲时必须进入阻塞态block而不是挂起态(suspend)固定时间片-任务环 Round-Robin运行固定时间后强制切换上下文共享栈栈大小动态调整将有限的栈空间给正在运行的线程使用其他栈保持最小尺寸缺点增加栈空间调整的处理优点省资源用时间换空间export把一个任务的“配置部分”和“实时数据”部分 分开任务数据内容存储位置配置部分任务入口、任务优先级、任务名称、参数地址const rom段实时数据任务栈指针、任务栈地址、栈大小、超时时间ram将配置部分部分使用magic_word包裹实现初始化动态判断任务个数并定义“内核任务”作为整个任务的链表头用于比遍历对比其他export 使用段的形式定义该段数据统一处理方法并使用段开始标记和段结束标记集中判断移植初始化栈保存寄存器PS PSW AX BC DE HL CSBRK中断上下文保存入栈push寄存器“栈空间的调整”出栈pop寄存器栈空间的调整注意往前拷贝和往后拷贝有区别

相关推荐

12 Copilot Agent 模式:不用打开浏览器,Copilot 自己就帮你改完了
12 Copilot Agent 模式:不用打开浏览器,Copilot 自己就帮你改完了

摘要:本文深入解析 GitHub Copilot 的 Agent 模式,它是继 Chat(对话分析)和 Edit(原地修改)之后的第三代 AI 编程助手。Agent 模式的核心是“自动执行”:你只需告诉它最终目标(如“加… · 2026/9/25 21:26:36

2026跨境社媒新号起盘实录:零投放靠“AI蹭热点+评论区截流”30天破万粉,这些坑你一定踩过
2026跨境社媒新号起盘实录:零投放靠“AI蹭热点+评论区截流”30天破万粉,这些坑你一定踩过

从零到万粉:一次跨境社媒冷启动的实践与反思 在信息爆炸的今天,一个新账号如何在竞争激烈的跨境社交媒体平台中脱颖而出?这不仅是许多内容创作者面临的挑战,更是跨境从业者必须面对的课题。本文将分享一次为期30天的实践记录&… · 2026/9/24 18:29:41

【Java实战】Java加解密算法全解析:分类、场景与国密算法实战总结
【Java实战】Java加解密算法全解析:分类、场景与国密算法实战总结

作者简介:大家好,我是CodeStats。一个在底层技术上“考古”了四年的硬核爱好者,也是WWAIC(全周项目AI编程)范式的提出者和实践者。我曾手写过一个完整的Java Web框架(从IoC容器到嵌入式Tomcat,代… · 2026/9/24 22:15:30

Spingboot启动预热的实现
Spingboot启动预热的实现

启动预热的适用场景启动预热适合以下情况:数据主要来自第三方接口,无法直接从本地数据库读取。第三方接口响应较慢,首次访问容易超时。一个页面需要调用多个第三方接口或逐项查询。数据读取频繁,但变化不频繁。希望服务启动后&… · 2026/9/29 6:52:37

Understanding Driving Risks using Large Language Models: Toward Elderly Driver Assessment
Understanding Driving Risks using Large Language Models: Toward Elderly Driver Assessment

文章主要内容总结 本文研究了多模态大语言模型(具体为ChatGPT-4o)利用静态行车记录仪图像进行类人交通场景解读的潜力,重点聚焦与老年司机评估相关的三项任务:交通密度评估、交叉口可见性评估和停车标志识别。这些任务需上下文推理而非简单目标检测。研究采用零样本、少样… · 2026/9/28 3:32:43

Leveraging Large Language Models for Classifying App Users‘ Feedback
Leveraging Large Language Models for Classifying App Users‘ Feedback

文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)解决应用用户反馈分类的挑战,传统方法依赖有监督机器学习,但受限于标注数据集的规模和质量。研究通过三个核心实验评估了4种先进LLMs(GPT-3.5-Turbo、GPT-4o、Flan-T5、Llama3-70b)的性能: LLMs在用户反馈分类中的基… · 2026/9/28 3:32:43

Using Large Language Models for Legal Decision-Making in Austrian Value-Added Tax Law: An Experim...
Using Large Language Models for Legal Decision-Making in Austrian Value-Added Tax Law: An Experim...

文章主要内容总结 本文通过实验评估了大型语言模型(LLMs)在奥地利及欧盟增值税(VAT)法框架下辅助法律决策的能力。研究聚焦于两种提升LLM性能的方法——微调(fine-tuning)和检索增强生成(RAG),并在两类案例中进行验证:一是权威教科书案例,二是税务咨询公司的真实案… · 2026/9/28 3:32:43

学Java别走弯路,这5个方向最吃香
学Java别走弯路,这5个方向最吃香

学Java的人很多,但学明白的人不多。有人学了半年还在写控制台程序,有人一年就能独当一面。差别不在天赋,而在方向。Java生态太庞大了,什么都学等于什么都没学。选对方向,事半功倍。今天盘点当前最吃香的5个Java方向&am… · 2026/9/29 4:13:53

AlphaAgents: Large Language Model based Multi-Agents for Equity Portfolio Constructions
AlphaAgents: Large Language Model based Multi-Agents for Equity Portfolio Constructions

AlphaAgents相关总结与翻译 一、文章主要内容总结 (一)研究背景与问题 传统股票投资组合管理依赖人类分析师处理海量信息(如财务披露、财报、市场新闻等),存在信息处理效率低、易受认知偏差(如损失厌恶、过度自信)影响的问题,可能错失投资收益机会。尽管AI在数据处理… · 2026/9/28 3:32:08

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/29 0:45:26

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码