标签: rtos

如何通过良好的设计保留堆栈空间?

我正在使用RTOS编程用于RAM有限的嵌入式微控制器.

我经常将我的代码分解为短函数,但每个函数调用都需要更多的堆栈内存.每个任务都需要他的堆栈,这是项目中重要的内存消费者之一.

是否有替代方法可以使代码保持良好的组织和可读性,仍保留内存?

c memory embedded stack rtos

12
推荐指数
4
解决办法
2011
查看次数

为什么在拥有RTOS时需要可编程实时单元(PRU)?

beaglebone Black处理器包括两个独立的可编程实时单元(PRU).业余爱好者和专业人士对可能将这些单元用于实时应用感到兴奋,这是可以理解的.但是,如果您可以使用RTOS(无论是beaglebone还是Rasberry pi),为什么还需要PRU?

编辑 - 有关信息,BBB的ARM Cortex A8运行频率为1 GHz,频率为1.9 DMIPS/MHz.PRU是以200 MHz运行的简单RISC.

embedded rtos raspberry-pi beagleboneblack

11
推荐指数
2
解决办法
8466
查看次数

嵌入式系统的实时操作系统 - >良好的入门书籍

我在AVR微控制器上做了很多工作.我在UNI没有合适的操作系统课程.不是来自CS分支,但我想要一本书,它给出了通用操作系统概念以及嵌入式系统的RTOS概念.有什么建议吗?详细说明像TinyOS或FemtoOS这样的特定操作系统的东西会很好,但我想要一些基于API的示例/代码.

有什么建议 ?

embedded operating-system rtos

9
推荐指数
1
解决办法
9295
查看次数

开源交叉编译器支持Ada多任务RTOS

Ada有哪些RTOS可以使用开源/免费交叉编译器,支持多任务/多线程?

我有一个Atmel AT90USB162芯片,我想用Ada编程.我的第一个选择是使用AVR-Ada对其进行编程,但由于它没有任务支持,因此它是不可选择的(现在我对如何支持其任务转移没有任何线索).所以我需要一个更强大的方法.我想过使用QNX,但它比我的芯片架还要复杂得多.

我得到了AVR芯片支持uC/OS-II和FreeRTOS的信息.FreeRTOS或uC/OS-II有免费的Ada交叉编译器吗?

谢谢.

avr rtos ada cross-compiling rtems

9
推荐指数
3
解决办法
2308
查看次数

是什么让内核/操作系统实时?

我正在阅读这篇文章,但我的问题是在一个通用的层面,我正在考虑以下几点:

  1. 内核可以实时调用,因为它有实时调度程序吗?或者换句话说,假设我有一个Linux内核,如果我将默认调度程序从O(1)或更改CFS为a real time scheduler,它是否会成为RTOS?
  2. 它需要硬件的任何支持吗?通常我看到嵌入式设备有RTOS(例如VxWorks,QNX),这些有没有特殊规定/ hw来支持它们?我知道RTOS进程的运行时间是确定性的,但是可以使用longjump/setjump在确定的时间内获得输出.

我真的很感激它的一些输入/见解,如果我对某事有误,请纠正我.

linux rtos scheduler linux-kernel

9
推荐指数
2
解决办法
3651
查看次数

适用于8位微处理器的操作系统是什么?

它不需要是一个完整的操作系统,但必须至少具有多任务处理能力(即调度程序).
请提及它的处理器架构.

这是一项调查,因此确切的功能并不重要.当您的下一个8位嵌入式项目出现时,可以将其视为一个可以查看可能性的地方......

我意识到大多数8位微处理器不需要操作系统,但作为反例,Rabbit Semiconductor为RCM3710处理器模块提供了4个串行端口,10-BaseT以太网端口,512K RAM和512K闪存.所有这一切只需39美元.全部基于8位Z80核心.

8位不必然意味着极端的资源约束.

embedded operating-system rtos

8
推荐指数
0
解决办法
7150
查看次数

混合RTOS和循环执行程序是否有意义?

在一个小型嵌入式系统项目中,我们有一些代码,我们希望在一个线程中运行,因此我们选择在嵌入式RTOS(eCos)之上构建.

以前,我们在main()中使用了一个循环执行程序,它驱动每个作为状态机实现的任务.对于某些任务,我们遇到了需要将任务分解为许多细粒度状态的问题,从而使代码更加复杂.

当切换到RTOS时,如果我们给每个单独的任务提供自己的线程,我们发现每个线程堆栈的内存使用量会很快增加.(我们只有64k,需要内存用于我们的通信缓冲区)

我们正在考虑使用轮胎进行通信任务,并考虑使用其他线程进行循环执行.循环执行程序将驱动其他逻辑任务.

这样混合RTOS和循环执行是否有意义?

embedded multithreading rtos

8
推荐指数
1
解决办法
840
查看次数

抢占和上下文切换之间的区别

一点介绍,

我目前正在编写一个小的(读取微小的)RTOS内核,它应该与内核中的大多数内容单片.但是我找不到下面列出的一些事情的很多信息,这将是非常有用的,除此之外,它实际上不是某种大学项目,而是我正在按照自己的意愿行事.

回答所有问题的一个更好的选择是,如果你可以向我推荐一个免费提供的RTOS(甚至免费书籍),最好是实现用户空间并且是可抢占的(但不像linux那样复杂).Linux有一些我迄今为止看过的最糟糕的文档(我确实尝试过从linux代码中解决问题,但是只有大量的定义分散在一百万个文件和函数钩子中,并且有很多名字,每个版本都会重命名有时感动...)

  1. "抢占"和"上下文切换"有什么区别?

  2. 抢占式和非抢占式内核之间的主要区别是什么?程序员需要做什么工作才能使内核抢占先机?

  3. 如何创建和使用用户模式?

    ARM文档说,在用户模式下,任何切换到特权模式的指令都将被视为未定义指令.

  4. 如果是这样,用户空间程序使用内核代码的唯一方法是系统调用?

  5. 内核如何响应用户空间或与之交互?

  6. 这是否意味着启动后(在一个简单的系统中)唯一的内核线程将是空闲线程?

  7. 如果在切换到用户进程时取消映射内核代码和数据所在的页面,那么在系统调用或中断时,内核代码如何在不映射到虚拟地址空间的情况下执行?

  8. "可抢占的内核"是否仅仅意味着内核的设计方式使得在执行内核代码期间进行上下文切换是安全的?或者它是否需要做更多的工作?

哦,如果这里不允许这么多问题,抱歉,找不到任何相关的内容.

architecture kernel arm rtos

8
推荐指数
1
解决办法
6185
查看次数

为什么RTOS任务必须在无限循环中执行?

嗨,我是RTOS中的新手,几乎每个我读过的文档,都表明任务必须是无限循环,但没有说明原因.有人可以帮忙解释一下吗?谢谢

c rtos

8
推荐指数
2
解决办法
4139
查看次数

什么是v和x意味着在freeRTOS任务中创建或使用它?

在创建或管理免费RTOS的任务中,x和v是什么意思?xTaskcreate还是vTaskcreate?

rtos freertos

8
推荐指数
2
解决办法
1999
查看次数