Keil 8051 RTX51 Tiny使用注意事项

【RTX51 Tiny入门】01_RTX51 Full & Tiny简介 文章目录01 - RTX51简介02 - RTX51 Full & Tiny简介03 - 消失的RTX Full04 - 总结 01 - RTX51简介   RTX51是Keil官方专门针对8051单片机及相关系列而研发的嵌入式多任务实时系统(RTOS),其实很少人知道8051也有操作系统,因为8051的各种资源限制问题,裸机编程是其长处,但需求是万变的,8051也有使用RTOS的场合。... 阅读详情
      近来回顾Keil 8051的RTX51 Tiny操作系统的使用,发现RTX51 Tiny的实现还是比较巧妙的:动态堆栈搬移,为当前运行任务腾出最大可用堆栈空间的思路很有亮点。下面是RTX51 Tiny使用的一些备忘。
      1、OS代码大小。时间片轮转使能时os核心380字节左右,os_create大小137字节。这样,使用OS的代码最小代价是520字节左右。
      2、数据占用大小。RTX51 Tiny实现使用idata作为暂存空间:6+2*TaskNum+1*TaskNum+15*TaskNum。可位寻址占用2个bit。一个典型的4个任务的应用中,OS idata占用空间是78字节。

      3、任务0的特殊注意点。经实测,任务0执行时间要较其它任务少一些。分析原因,原因是切换到任务0期间(此时已经占用任务0的时间片了),要比切换到其它任务更多的任务堆栈搬移,见下面的示例图。不考虑中断介入时引起的调度,单考虑无中断的均匀时间片调度:切换到任务0堆栈搬移任务数是TaskNum -1,而其它任务切换时堆栈搬移任务数是1。正因为RTX51 Tiny的这个动态堆栈搬移特点,所以,实际应用设计时,应尽量让多层函数调用链发生在任务0中,从而减少总的堆栈搬移时间。



51单片机rtx51-Tiny嵌入式实时操作系统初试 RTX51单片机操作系统 阅读详情

相关推荐

RTX51 Tiny实时内核在8051单片机中的应用与实践

实时操作系统(RTOS)是嵌入式开发中管理多任务的核心技术,其核心原理是通过任务调度算法实现CPU资源的合理分配。RTX51 Tiny作为专为8051设计的轻量级RTOS内核,采用轮转与协作式混合调度策略,在仅占用900字节Flash和极少量RAM的情况下实现多任务管理。这种超轻量级设计使其成为工业传感器、智能家居等资源受限场景的理想选择,开发者可以通过Keil环境快速集成,并利用信号机制和共享变量实现基础任务通信。针对实际开发中的栈溢出、定时不准等典型问题,需要特别注意内存优化和中断配置技巧。

weixin_30781107的博客 631

Keil C51自带的RTX51 Tiny使用

RTX51 Tiny Kernel 要求是PK51专业版开发工具 RTX51微小实时操作系统,最多支持16个任务,具体的一些参数可以参考表1-1 Parameter Limits Maximum Number of Defined Tasks 16 Maximum Number of Activ...

twx11213030422的博客 5783

51单片机实时操作系统(RTX51)

本人业余大专,毕业已经整整1年了。在学校自学51单片机,c语言、stm32 、ucos RTOS等;原先找了一份测试工程师的工作,1700元一月。人生多姿多彩,没想到回校当教师了。起初我很开心,以为能好好的学习专业,如今我错了,我变得懒惰了。 我热爱电子以及机械等,就如我的博客名字一样。我要加油,我要学习,我要成成为“大牛”。                       3-8节我突然发现了

EPLT 6936

RTX51 Tiny用户指南(二)

实时程序 实时程序必须快速响应实时发生的事件。没有实时操作系统(RTOS),事件的创建就不会那么轻松。随着更多事件被添加,复杂性和程序复杂程度增加,就凸显了RTOS的好处。 单任务程序 嵌入式和标准C程序都是从main C函数开始执行。在嵌入式应用中,main通常按死循环执行,可以看做是一个连续执行的单任务。例如: void main (void) { while (1) ...

沧海孤叶的博客 1239

Keil C51中RTX51 Tiny的STACK_ERROR汇编错误解析

在嵌入式开发中,特殊功能寄存器(SFR)是微控制器硬件操作的核心接口。以8051架构为例,其EA(全局中断使能)等SFR通过内存映射方式与内核交互。RTX51 Tiny实时操作系统在进行堆栈错误检测时,需要精确控制这些寄存器。当使用新版AX51汇编器时,由于模块化设计不再自动包含标准SFR定义,会导致STACK_ERROR等关键宏出现未定义符号问题。通过手动添加EA等SFR的位定义,开发者可以解决这类兼容性问题,确保实时系统的可靠性。本文以Keil开发环境为例,详细讲解如何正确处理RTX51 Tiny与AX

weixin_30412167的博客 318

RTX51 Tiny版本兼容性与Keil C51开发实践

实时操作系统(RTOS)在嵌入式开发中扮演着关键角色,特别是对于资源受限的8051架构。RTX51 Tiny作为Keil提供的轻量级RTOS内核,其版本兼容性直接影响开发效率。从技术原理看,RTOS通过任务调度和资源管理实现多任务处理,而编译器版本差异可能导致二进制接口变化。在工程实践中,Keil C51 v5.1和v5.5版本的RTX51 Tiny 1.06保持二进制兼容,但需注意头文件路径和链接方式差异。典型应用场景包括工业控制系统升级,通过合理配置编译选项和验证库文件版本,可确保开发套件(PK51/D

weixin_33704591的博客 410

RTX51Tiny 学习笔记(三)

RTX51 Tiny User’s Guide

我的博客 2496

Keil C51中RTX51 Tiny多版本库管理实践

在嵌入式系统开发中,实时操作系统(RTOS)的版本管理是确保项目稳定性的关键环节。以Keil C51开发环境为例,其默认的库链接机制会导致多版本RTX51 Tiny库的管理难题。通过分析链接器工作原理,采用项目专属库配置方案能有效隔离版本冲突。该方案利用Keil工具链的文件处理优先级特性,将特定版本库文件直接纳入项目管理,既保持了开发环境清洁,又实现了精确的版本控制。对于8051单片机开发,这种库管理方式特别适合需要同时维护多个产品线的场景,能显著提升团队协作效率和构建可靠性。

weixin_30485379的博客 359

关于RTX51-Tiny,一种适用于51的RTOS

RTX51 Tiny是一个实时操作系统(RTOS),允许创建应用程序,同时执行多个功能或任务。这在嵌入式应用程序中是经常需要的。虽然可以在没有RTOS的情况下创建实时程序(通过在循环中执行一个或多个函数或任务),但是像RTX51 Tiny这样的RTOS可以解决许多调度、维护和计时问题。实时操作系统(real-time operating system, RTOS)可以灵活地调度CPU、内存等系统资源,并提供任务之间的通信。RTX51 Tiny是一个功能强大的RTOS,易于使用

weixin_51026398的博客 5577

8051开发进阶:RTX51 Tiny实时操作系统核心原理与工程实践指南

实时操作系统(RTOS)是嵌入式开发中实现多任务并发的核心技术,它通过任务调度、同步与通信机制,将复杂的应用逻辑分解为独立、可管理的任务单元。其核心原理在于通过协作式或抢占式调度算法,在单核处理器上模拟多任务并行执行,从而提升代码的模块化程度和系统响应实时性。在资源受限的微控制器领域,RTOS的技术价值尤为突出,它能够以极小的内存和CPU开销,为裸机程序带来结构化的并发处理能力,广泛应用于工业控制、智能仪表、物联网终端等场景。本文聚焦于经典8051平台上的RTX51 Tiny系统,深入解析其协作式内核设计、

weixin_30875157的博客 443

RTX51tiny教程

网友的一篇RTX51tiny文章,对RTX51tiny有兴趣的朋友可以看一下

RTX51Tiny 学习笔记(一)

RTX51 Tiny User’s Guide

我的博客 4020

华为海思2026届数字IC秋招笔试真题解析与实战技巧(2025最新版)

本文深度解析华为海思2026届数字IC秋招笔试真题,涵盖高频考点如后端设计、低功耗设计、SystemVerilog语法等核心内容。提供时序违例修复、时钟树综合等实战技巧,帮助考生高效备考。特别关注UPF低功耗设计规范等最新考点,助力考生在秋招笔试中脱颖而出。

lg888的博客 1089

初识trx51os

一、简介 RTX51是Keil公司提供的一个用于8051系列处理器多任务实时操作系统,而RTX51 Tiny 是一个 RTX51的子集,支持许多RTX51中的基本特征,可以很容易地在没有任何外部存储器的单片8051系统上运转。相对于RTX51,RTX51 Tiny仅支持时间片轮转任务切换和使用信号进行任务切换,不支持抢先式的任务切换,不包括消息历程,没有存储器池分配程序。 RTX51 Full...

weixin_30530939的博客 504

MATLAB新手必看:Stewart平台运动学逆解从入门到实战(附完整代码)

本文详细介绍了如何使用MATLAB实现Stewart平台的运动学逆解,从基础原理到完整代码实现,涵盖并联机器人的数学建模、MATLAB编程和Simulink集成。通过实战案例和可视化分析,帮助新手快速掌握Stewart平台的运动学逆解技术,适用于机器人学和控制理论领域的研究与应用。

dream的博客 551

改进的主动轮廓模型实现图像分割

主动轮廓模型的优点在于可以自适应地调整轮廓形状和位置,适用于不同形状和大小的目标分割。改进的主动轮廓模型是一种有效的图像分割方法,能够适应不同场景下的图像分割需求。改进的主动轮廓模型涉及到许多参数,如模型参数、分割参数、权值系数等,这些参数的调整也会直接影响到分割结果。本文将介绍一个改进的主动轮廓模型,该模型可以实现对图像进行有效的分割。改进的主动轮廓模型是在传统的主动轮廓模型基础上进行的改进。和传统的模型相比,改进的主动轮廓模型加入了外部力和内部力,能够更好地适应复杂场景下的图像分割。

qq_39605374的博客 294

RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny

RTX51 Tiny是一种实时操作系统(RTOS),可以用它来建立多个任务(函数)同时执行的应用(从宏观上看是同时执行的,但从微观上看,还是独立运行的)。 实时操作系统能灵活的调度系统资源,像CPU和存储器,并且提供任务间的通信。RTX51 Tiny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器。该RTOS最多支持16个任务,基于RTX51 Tiny构建的应用程序没有main( )函数,是从任务0开始执行的。

九天揽月,五洋捉鳖 1万+

Python实现PDB文件预处理

蛋白质结构研究依赖PDB文件存储的三维结构数据,但原始文件常含无关的水分子、离子和非标准残基等干扰信息。本文介绍了一个基于BioPython的Python预处理脚本,可自动清理PDB文件,主要功能包括:1)移除短于阈值的蛋白质链;2)过滤非标准氨基酸;3)可选保留水分子和金属离子。该脚本逻辑清晰,支持批量处理,能显著提升结构比对、分子对接等分析前的数据准备效率,为后续生物信息学研究提供更纯净的结构数据基础。

Protein Designer的博客 568

基于51单片机的实时多任务操作系统(RTX51)使用教程

RTX51 Tiny使用方法

麦田里的守望者的博客 6692

【STK】手把手教你利用STK进行光电红外仿真04-STK/EOIR模块的实战操作1航天器星载相机对LEO卫星成像

今天引入一个实际的场景,帮助大家完成对于这个模块的理解与运用。

weixin_44184852的博客 2417

展锐平台wifi连接性问题解决方案

对于断开连接的问题,需要从kernel log中确认下,是上 层主动发起的断开(会下发disconnect的命令),还是CP侧上报的断开事件。同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。1、出现wifi连接正常,但无法上网问题,首先确认其他手机是否可以正常上网,排除网络自身问题;3 路由器配置问题,出现过一个案例,恢复出场设置问题就解决了,具体根因。

手机-手表蓝牙开发工程师的博客 2022

RTX51 Tiny官方文档中文版下载仓库介绍:8051微控制器上的实时操作系统助力

RTX51 Tiny官方文档中文版下载仓库介绍:8051微控制器上的实时操作系统助力 【下载地址】RTX51Tiny官方文档中文版下载仓库介绍 RTX51 Tiny官方文档(中文版)为8051系列微控制器开发者提供了全面的实时操作系统使用指南。文档详细介绍了RTX51 Tiny的配置、API参考、编程最佳实践及技术细节,...

gitblog_06723的博客 982

【TCAD】Sentaurus 中的“陷阱trap”仿真设置

允许使用有限的数据集名称 SFactor 规范,例如 DeepLevels , xMoleFraction , 和 yMoleFraction (从兴奋剂档案中读取) eTrappedCharge 和 hTrappedCharge (从指定的文件中读取 DevFields 在 File 部分)或 PMI 用户字段 PMIUserField0...10 (从指定的文件中读取 PMIUserFields 在 File 部分)。给定的陷阱截面 eNeutral 陷阱是多种多样的 Xsec 项目参数。

荷塘阅色 1307

RTX51 Tiny用户指南(三)

配置RTX51 Tiny RTX51 Tiny可以被每个应用初始化。 配置 RTX51 Tiny必须被创建的每一个应用初始化。所有配置设置可以在CONF_TNY.A51文件中找到,文件位于\KEIL\C51\RTXTINY2\文件夹。CONF_TNY.A51的配置选项允许以下操作: 指定定时器滴答中断(Timer Tick Interrupt)寄存器区。 指定定时器滴答间隔(Tim...

沧海孤叶的博客 1338

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RTX51 Tiny学习

 Round-robin 任务切换RTX51 Tiny可以配置成使用round-robin多任务。Round-robinp容许quasi-parallel执行多任务。任务并不是连续执行的,而是分时间片执行的(可用的CPU时间被分成时间片,RTX51 Tiny把时间片分配给各个任务)。时间片的时间很短(以毫秒为单位),所以任务看起来像连续执行一样任务在分配给他的时间片内执行(除非放弃)。

941

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 扫盲回帖系列之3——在windows下编译生成的程序为什么不能在ubuntu下运行呢?
下一篇: 重温唐诗二首
二进制脑袋
博客等级 码龄25年 25粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值